it-swarm.com.de

einstellung der Y-Achsengrenze in Matplotlib

Ich brauche Hilfe bei der Festlegung der Grenzen der Y-Achse von Matplotlib. Hier ist der Code, den ich ausprobiert habe, erfolglos.

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, bekomme ich Y-Achsen-Grenzwerte von 20 und 200. Ich möchte jedoch die Grenzwerte 20 und 250.

276
Curious2learn

Versuche dies . Funktioniert auch für Untergrundstücke.

axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])
430
Hima

Ihr Code funktioniert auch für mich. Eine andere Problemumgehung kann jedoch darin bestehen, die Plotachse abzurufen und dann nur die y-Werte zu ändern:

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

103
thetarro

Sie können Ihren Achsenbereich mithilfe von matplotlib.pyplot.axis selbst festlegen.

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. 

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

matplotlib.pyplot.ylim

plt.ylim(-2, 2)
plt.xlim(0,10)
21
Birat Bose

Wenn Sie @ Hima die Antwort hinzufügen möchten, können Sie Folgendes verwenden, wenn Sie ein aktuelles X- oder Y-Limit ä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 das besonders nützlich, wenn ich die Standard-Ploteinstellungen nur ein wenig vergrößern oder verkleinern möchte.

9

Das sollte funktionieren. Ihr Code funktioniert für mich wie für Tamás und Manoj Govindan. Es sieht so aus, als könnten Sie versuchen, Matplotlib zu aktualisieren. Wenn Sie Matplotlib nicht aktualisieren können (z. B. wenn Sie nicht über ausreichende Administratorrechte verfügen), könnte es hilfreich sein, ein anderes Backend mit matplotlib.use() zu verwenden.

6
Eric O Lebigot

Dies funktionierte zumindest in Matplotlib Version 2.2.2:

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

Wahrscheinlich ist dies eine nette Art, nur xmin und ymax usw. einzurichten.

2
Antti A

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

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

Wenn eine Achse (generiert durch Code unterhalb des in der Frage angezeigten Codes) Sharing des Bereichs mit den ersten Achsen ist, stellen Sie sicher, dass Sie den Bereich after der letzten Aufzeichnung dieser Achsen festlegen .

0
Rainald62