Ich lerne das Verwenden, matplotlib
indem ich Beispiele studiere, und viele Beispiele scheinen eine Linie wie die folgende zu enthalten, bevor ich eine einzelne Handlung erstelle ...
fig, ax = plt.subplots()
Hier sind einige Beispiele...
- Ändern Sie den Text der Häkchenbezeichnung
- http://matplotlib.org/examples/pylab_examples/boxplot_demo2.html
Ich sehe, dass diese Funktion häufig verwendet wird, obwohl im Beispiel nur versucht wird, ein einzelnes Diagramm zu erstellen. Gibt es noch einen anderen Vorteil? Die offizielle Demo für wird subplots()
auch f, ax = subplots
beim Erstellen eines einzelnen Diagramms verwendet und verweist danach nur noch auf ax. Dies ist der Code, den sie verwenden.
# Just a figure and one subplot
f, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
python
matplotlib
plot
visualization
neelshiv
quelle
quelle
Antworten:
plt.subplots()
ist eine Funktion, die ein Tupel zurückgibt, das eine Figur und Achsenobjekte enthält. Wennfig, ax = plt.subplots()
Sie also verwenden, entpacken Sie dieses Tupel in die Variablenfig
undax
. Habenfig
ist nützlich, wenn Sie Attribute auf Figurenebene ändern oder die Figur später als Bilddatei speichern möchten (zfig.savefig('yourfilename.png')
. B. mit ). Sie müssen das zurückgegebene Figurenobjekt sicherlich nicht verwenden, aber viele Leute verwenden es später, so dass es üblich ist, es zu sehen. Außerdem haben alle Achsenobjekte (die Objekte, die Plotmethoden haben) ohnehin ein übergeordnetes Figurenobjekt, also:ist prägnanter als dies:
quelle
ax11, ax12, ax21, ax22
verwendenfig.add_subplot(221)
(oder 222, 223 bzw. 224).Nur eine Ergänzung hier.
Die folgende Frage lautet: Was ist, wenn ich mehr Nebenhandlungen in der Abbildung möchte?
Wie im Dokument erwähnt, können wir
fig = plt.subplots(nrows=2, ncols=2)
eine Gruppe von Unterplots mit Raster (2,2) in einem Figurenobjekt festlegen.Dann, wie wir wissen,
fig, ax = plt.subplots()
gibt das ein Tupel zurück, versuchen wir esfig, ax1, ax2, ax3, ax4 = plt.subplots(nrows=2, ncols=2)
zuerst.Es löst einen Fehler aus, aber keine Sorge, denn wir sehen jetzt, dass
plt.subplots()
tatsächlich ein Tupel mit zwei Elementen zurückgegeben wird. Das erste muss ein Figurenobjekt sein, und das andere sollte eine Gruppe von Nebenplotobjekten sein.Versuchen wir es noch einmal:
und überprüfen Sie den Typ:
Wenn Sie Parameter wie (nrows = 1, ncols = 4) verwenden, sollte das Format natürlich wie folgt lauten:
Denken Sie also daran, die Konstruktion der Liste so zu halten, wie sie in der Abbildung festgelegt ist.
Hoffe das wäre hilfreich für dich.
quelle
fig, axes = plt.subplots(nrows=10, ncols=3)
undaxes = axes.flatten()
. Jetzt können Sie zu jeder subplot durch seinen Index verweisen:axes[0]
,axes[1]
, ...nrows=1
, da dannaxes
flach mit einer Länge vonncols
fig, axes = plt.subplots(nrows=1, ncols=3, squeeze=False)
Als Ergänzung zu der Frage und den obigen Antworten gibt es auch einen wichtigen Unterschied zwischen
plt.subplots()
undplt.subplot()
, beachten Sie das Fehlen's'
am Ende.Man kann verwenden
plt.subplots()
, um alle ihre Unterzeichnungen auf einmal zu erstellen, und es werden die Figur und die Achsen (Plural der Achse) der Unterzeichnungen als Tupel zurückgegeben. Eine Figur kann als Leinwand verstanden werden, auf der Sie Ihre Skizze malen.Sie können jedoch verwenden,
plt.subplot()
wenn Sie die Unterzeichnungen separat hinzufügen möchten. Es wird nur die Achse eines Unterplots zurückgegeben.Wird
plt.subplots()
jedoch bevorzugt, da Sie damit einfacher Optionen haben, um Ihre gesamte Figur direkt anzupassenWährend bei
plt.subplot()
muss für jede Achse einzeln angegeben werden, was umständlich werden kann.quelle
ax3 = plt.subplot(2,1,3)
funktioniert nicht, da sie 2 x 1 ist und nur 2 Diagramme enthält.Zusätzlich zu den obigen Antworten können Sie den Objekttyp überprüfen, mit
type(plt.subplots())
dem ein Tupel zurückgegeben wird. Andererseits werdentype(plt.subplot())
Rückgaben zurückgegeben,matplotlib.axes._subplots.AxesSubplot
die Sie nicht entpacken können.quelle