So stellen Sie das Y-Achsen-Limit ein

Lesezeit: 3 Minuten

Benutzeravatar von Curious2learn
Neugierig2lernen

Ich brauche Hilfe beim Festlegen der Grenzen der Y-Achse in Matplotlib. Hier ist der Code, den ich erfolglos ausprobiert habe.

import matplotlib.pyplot as plt

plt.figure(1, figsize = (8.5,11))
plt.suptitle('plot title')
ax = []
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1")
ax.append(aPlot)
plt.plot(paramValues,plotDataPrice[0], color="#340B8C", 
     marker="o", ms = 5, mfc="#EB1717")
plt.xticks(paramValues)
plt.ylabel('Average Price')
plt.xlabel('Mark-up')
plt.grid(True)
plt.ylim((25,250))

Mit den Daten, die ich für dieses Diagramm habe, erhalte ich y-Achsen-Grenzwerte von 20 und 200. Ich möchte jedoch die Grenzwerte 20 und 250.

  • Funktioniert für mich mit Matplotlib 1.0.0, wenn ich hinzufüge plt.show() am Ende, um die Handlung zu zeigen. Welche Version und welches Backend verwendest du?

    – Tamás

    23. September 2010 um 11:41 Uhr

  • Arbeitet für mich mit Matplotlib 0.98.5.2, Python 2.6.2. Ich habe beides ausprobiert plt.ylim((25,250)) und plt.ylim(ymax = 250, ymin = 25). Ich benutze die Agg Backend.

    – Manoj Govindan

    23. September 2010 um 11:50 Uhr

  • Danke euch beiden. Funktioniert es mit PDF-Backend für Sie.

    – Neugierig2lernen

    23. September 2010 um 12:26 Uhr

  • Hinweis: axisbg ist jetzt veraltet

    – SherylHohman

    26. März 2017 um 19:34 Uhr

  • plt.ylim ist die richtige, moderne Lösung für dieses Problem. Hier ist eine gute Ressource: showmecode.info/matplotlib/axes/set-limits

    – Luk

    25. Juni 2020 um 20:50 Uhr

Benutzeravatar von Hima
Hima

Aktuelle Achse holen über plt.gca()und legen Sie dann seine Grenzen fest:

ax = plt.gca()
ax.set_xlim([xmin, xmax])
ax.set_ylim([ymin, ymax])

  • Übrigens, das ist eine dumme Abkürzung, die “get die caktuell axes”.

    – Lenar Hoyt

    8. Mai 2017 um 10:57 Uhr

  • Sie können auch einen Wert festlegen None was die Berechnung matplotlib überlässt, zB axes.set_ylim([ymin,None])

    – Linqu

    13. September 2018 um 10:14 Uhr

  • Es gibt andere Optionen als zu verwenden None wie im Beitrag von @linqu : set_ylim(bottom=None, top=None, [...], *, ymin=None, ymax=None). bottom und ymin (Äquivalent) für Minimum. top und ymax) Äquivalent für Maximum. Sie können nicht beide verwenden bottom und ymin auf einmal. Das gleiche mit top und ymax.

    – MaciekS

    4. November 2021 um 8:24 Uhr


Eine Sache, die Sie tun können, ist, Ihren Achsenbereich selbst festzulegen, indem Sie matplotlib.pyplot.axis verwenden.

matplotlib.pyplot.axis

from matplotlib import pyplot as plt
plt.axis([0, 10, 0, 20])

0,10 ist für den X-Achsenbereich. 0,20 ist für den Y-Achsenbereich.

oder Sie können auch matplotlib.pyplot.xlim oder matplotlib.pyplot.ylim verwenden

matplotlib.pyplot.ylim

plt.ylim(-2, 2)
plt.xlim(0,10)

Benutzeravatar von thetarro
thetarro

Eine andere Problemumgehung besteht darin, die Achsen des Diagramms abzurufen und neu zuzuweisen, indem nur die y-Werte geändert werden:

x1,x2,y1,y2 = plt.axis()  
plt.axis((x1,x2,25,250))

  • Du brauchst nicht zu greifen x1 und x2können Sie diese mit Matplotlib ableiten lassen None.

    – jacob

    24. März 2021 um 20:35 Uhr

Benutzeravatar von Reza Keshavarz
Reza Keshavarz

Sie können ein Objekt von instanziieren matplotlib.pyplot.axes und ruf die an set_ylim() darauf. Es wäre ungefähr so:

import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])

Der Benutzer-Avatar von love.by.Jesus
geliebt.von.Jesus

Nur zum Feintuning. Wenn Sie nur eine der Achsengrenzen festlegen und die andere Grenze unverändert lassen möchten, können Sie eine oder mehrere der folgenden Anweisungen wählen

plt.xlim(right=xmax) #xmax is your value
plt.xlim(left=xmin) #xmin is your value
plt.ylim(top=ymax) #ymax is your value
plt.ylim(bottom=ymin) #ymin is your value

Schauen Sie sich die Dokumentation für an xlim und für ylim

Benutzeravatar von Antti A
Antti A

Dies funktionierte zumindest in matplotlib Version 2.2.2:

plt.axis([None, None, 0, 100])

Wahrscheinlich ist dies eine nette Möglichkeit, zum Beispiel nur xmin und ymax usw. einzurichten.

Um die Antwort von @ Hima zu ergänzen, können Sie Folgendes verwenden, wenn Sie eine aktuelle x- oder y-Grenze ändern möchten.

import numpy as np # you probably alredy do this so no extra overhead
fig, axes = plt.subplot()
axes.plot(data[:,0], data[:,1])
xlim = axes.get_xlim()
# example of how to zoomout by a factor of 0.1
factor = 0.1 
new_xlim = (xlim[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor) 
axes.set_xlim(new_xlim)

Ich finde dies besonders nützlich, wenn ich die Standard-Ploteinstellungen nur ein wenig verkleinern oder vergrößern möchte.

1399870cookie-checkSo stellen Sie das Y-Achsen-Limit ein

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy