673 Stimmen

Einstellung der y-Achsengrenze in Matplotlib

Ich brauche Hilfe bei der Einstellung der Grenzen der y-Achse auf Matplotlib. Hier ist der Code, den ich versucht 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 diese Darstellung habe, erhalte ich y-Achsen-Grenzwerte von 20 und 200. Ich möchte jedoch die Grenzen 20 und 250.

2 Stimmen

Funktioniert für mich mit Matplotlib 1.0.0, wenn ich hinzufügen plt.show() am Ende, um die Darstellung zu zeigen. Welche Version und welches Backend verwenden Sie?

30 Stimmen

Funktioniert bei mir 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 verwende die Agg Backend.

1 Stimmen

Vielen Dank an Sie beide. Funktioniert es mit PDF-Backend für Sie.

30voto

Antti A Punkte 642

Dies funktionierte zumindest in Matplotlib Version 2.2.2:

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

Wahrscheinlich ist dies ein guter Weg, um z.B. nur xmin und ymax einzurichten, usw.

18voto

Steven C. Howell Punkte 14122

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

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 Standardeinstellungen für die Darstellung ein wenig verkleinern oder vergrößern möchte.

12voto

Eric O Lebigot Punkte 85676

Das sollte funktionieren. Ihr Code funktioniert bei mir, ebenso wie bei 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. weil Sie nicht über ausreichende administrative Rechte verfügen), können Sie vielleicht ein anderes Backend mit matplotlib.use() könnte helfen.

0 Stimmen

Danke für die Überprüfung! Ich verwende das pdf-Backend ( matplotlib.use('PDF') ). Ich verwende die Version, die mit der neuesten Version der Enthought Python Distribution geliefert wird. Können Sie bitte prüfen, ob es mit dem PDF-Backend funktioniert. Danke!

0 Stimmen

Es funktioniert mit dem PDF-Backend unter Mac OS X. Sind Sie sicher, dass die Ausgabedatei tatsächlich aktualisiert wird mit plt.savefig() ?

0 Stimmen

Ich habe das Problem erkannt, glaube ich. Wenn ich herausnehme aPlot = im plt.subplot Linie funktioniert es auch bei mir. Es scheint, dass, wenn man die Teilfläche einer solchen Variablen zuweist, eine andere Methode zur Einstellung der Achsengrenzen verwendet werden muss. Stimmt das?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X