Was bedeutet das Argument in fig.add_subplot(111)?
Lesezeit: 4 Minuten
happyontbelong
Manchmal stoße ich auf Code wie diesen:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
fig = plt.figure()
fig.add_subplot(111)
plt.scatter(x, y)
plt.show()
Was produziert:
Ich habe die Dokumentation wie verrückt gelesen, aber ich kann keine Erklärung dafür finden 111. manchmal sehe ich a 212.
Was bedeutet das Argument von fig.add_subplot() bedeuten?
Hallo. Haben Sie eine Antwort gefunden, was bedeutet bitte fig.add_subplot(111)?
– Durchschn
28. November 2021 um 20:33 Uhr
SaiyanGirl
Ich denke, das wird am besten durch das folgende Bild erklärt:
Um das Obige zu initialisieren, würde man Folgendes eingeben:
import matplotlib.pyplot as plt
fig = plt.figure()
fig.add_subplot(221) #top left
fig.add_subplot(222) #top right
fig.add_subplot(223) #bottom left
fig.add_subplot(224) #bottom right
plt.show()
Ich denke, die Version mit Kommas ist viel intuitiver und lesbarer als die Version mit 3-stelligen Zahlen
– Endolith
11. April 2014 um 14:19 Uhr
Das ist großartig, es zeigt, wie man “Subplots in einem Raster positioniert”, sei es ein 2×2-Raster wie das oben dargestellte Beispiel oder ein Raster aus 4×4-Graphen usw. Aber kann jemand bitte erklären, was die Größe dieser Graphen bestimmt, die angezeigt werden. Die Voreinstellungen für (2,2,1) finde ich ziemlich klein, ich hätte es gerne doppelt so groß oder mehr.
– Yoshiserry
2. Dezember 2014 um 0:19 Uhr
Das ist sehr hilfreich. Dieses Bild wäre etwas schöner, wenn es nicht quadratisch (2×2) wäre, aber ansonsten sehr hilfreich.
– TravisJ
6. März 2015 um 18:16 Uhr
@TravisJ Wow, was für ein Zufall! Ich habe ungefähr eine Stunde, bevor du das geschrieben hast, genau dasselbe gedacht! werde ich bald ändern 🙂
– SaiyanGirl
6. März 2015 um 22:58 Uhr
Sehr hilfreiche Antwort! Obwohl ich denke, dass die Bearbeitung ungenau ist. Das Verhalten, Nebenhandlungen mit Aussagen wie 1:2 bzw [1 3] wird von Matplotlib nicht unterstützt (zumindest nicht in 1.5.0) und scheint nur Matlab zu sein. (Beachten Sie, dass es in Matplotlib andere Optionen gibt, um dieses Verhalten zu erreichen, z Gitterspez )
– Labor
31. März 2016 um 8:14 Uhr
Hierbei handelt es sich um Rasterparameter der Unterdarstellung, die als einzelne ganze Zahl codiert sind. Zum Beispiel bedeutet „111“ „1×1-Raster, 1. Teilstück“ und „234“ bedeutet „2×3-Raster, 4. Teilstück“.
Alternativform für add_subplot(111) ist add_subplot(1, 1, 1).
Gibt es dazu eine ausführliche Dokumentation? Was ist in diesem Zusammenhang der Unterschied zwischen einem 1×1-Raster und einem 2×3-Raster?
– Donatello
30. November 2010 um 12:34 Uhr
1×1 Raster = 1 Zeile, 1 Spalte. 2×3-Raster = 2 Zeilen, 3 Spalten. Die dritte Zahl beginnt bei 1 und erhöht die Zeile zuerst. Weitere Informationen finden Sie in der Dokumentation von subplot().
– Christian Alis
2. Februar 2011 um 16:54 Uhr
Wie andere (vor mehr als zwei Jahren) erklärten, ist dies ein Erbe von Matlab. Aber im Interesse zukünftiger Leser sollten Sie wissen, dass es eine bessere Alternative in Form von gibt subplots() Methode.
– jarondl
15. November 2012 um 14:30 Uhr
Dokumentation des Nachlasses subplot() ist hier und subplots() ist hier.
– cryzeewulf
24. Oktober 2014 um 4:41 Uhr
DaveTM
Die Antwort von Constantin ist genau richtig, aber für mehr Hintergrundinformationen wird dieses Verhalten von Matlab geerbt.
subplot(m,n,i) zerlegt das Figurenfenster in eine m-mal-n-Matrix kleiner Subplots und wählt den i-Subplot für den aktuellen Plot aus. Die Plots werden entlang der obersten Reihe des Figurenfensters nummeriert, dann der zweiten Reihe und so weiter.
Das ist Matplotlib, nicht Matlab.
– dom0
12. Mai 2012 um 18:50 Uhr
Ein Großteil des Verhaltens von Matplotlibs wird von Matlab geerbt. Da die Matlab-Dokumentation besser war, dachte ich, es könnte helfen, zu erklären, wie sich dieser spezifische Funktionsaufruf verhält. Ja, Sie haben Recht, diese (Frage) bezieht sich auf Matplotlib. Das Matplotlib-Subplot-Dokumentation ist meiner Meinung nach weniger eindeutig.
fig = plt.figure()
fig.add_subplot(1, 2, 1) #top and bottom left
fig.add_subplot(2, 2, 2) #top right
fig.add_subplot(2, 2, 4) #bottom right
plt.show()
Pritz
import matplotlib.pyplot as plt
plt.figure(figsize=(8,8))
plt.subplot(3,2,1)
plt.subplot(3,2,3)
plt.subplot(3,2,5)
plt.subplot(2,2,2)
plt.subplot(2,2,4)
Der erste Code erstellt den ersten Subplot in einem Layout mit 3 Zeilen und 2 Spalten.
Die drei Graphen in der ersten Spalte bezeichnen die 3 Zeilen. Der zweite Plot kommt direkt unter dem ersten Plot in derselben Spalte und so weiter.
Die letzten beiden Plots haben Argumente (2, 2) was bedeutet, dass die zweite Spalte nur zwei Zeilen hat, verschieben sich die Positionsparameter zeilenweise.
Chabo
fig.add_subplot(ROW,COLUMN,POSITION)
ROW=Anzahl der Zeilen
COLUMN=Anzahl der Spalten
POSITION= Position des Diagramms, das Sie zeichnen
Beispiele
`fig.add_subplot(111)` #There is only one subplot or graph
`fig.add_subplot(211)` *and* `fig.add_subplot(212)`
Es gibt insgesamt 2 Zeilen, 1 Spalte, daher können 2 Unterdiagramme gezeichnet werden. Sein Standort ist 1. Es gibt insgesamt 2 Zeilen, 1 Spalte, daher können 2 Unterdiagramme gezeichnet werden. Seine Position ist die 2
Das add_subplot() Methode hat mehrere Aufrufsignaturen:
add_subplot(nrows, ncols, index, **kwargs)
add_subplot(pos, **kwargs)
add_subplot(ax)
add_subplot() <-- seit 3.1.0
Anrufe 1 und 2:
Die Aufrufe 1 und 2 erreichen dasselbe (bis zu einer Grenze, die unten erklärt wird). Stellen Sie sich vor, Sie geben zuerst das Rasterlayout mit ihren an ersten 2 Zahlen (2×2, 1×8, 3×4 usw.), z. B.:
f.add_subplot(3,4,1)
# is equivalent to:
f.add_subplot(341)
Beide erzeugen eine Subplot-Anordnung von (3 x 4 = 12) Subplots in 3 Zeilen und 4 Spalten. Das dritte Zahl gibt bei jedem Aufruf an, ab welchem Achsenobjekt zurückgegeben werden soll 1 oben links, nach rechts zunehmend.
Dieser Code veranschaulicht die Einschränkungen bei der Verwendung von Aufruf 2:
#!/usr/bin/env python3
import matplotlib.pyplot as plt
def plot_and_text(axis, text):
'''Simple function to add a straight line
and text to an axis object'''
axis.plot([0,1],[0,1])
axis.text(0.02, 0.9, text)
f = plt.figure()
f2 = plt.figure()
_max = 12
for i in range(_max):
axis = f.add_subplot(3,4,i+1, fc=(0,0,0,i/(_max*2)), xticks=[], yticks=[])
plot_and_text(axis,chr(i+97) + ') ' + '3,4,' +str(i+1))
# If this check isn't in place, a
# ValueError: num must be 1 <= num <= 15, not 0 is raised
if i < 9:
axis = f2.add_subplot(341+i, fc=(0,0,0,i/(_max*2)), xticks=[], yticks=[])
plot_and_text(axis,chr(i+97) + ') ' + str(341+i))
f.tight_layout()
f2.tight_layout()
plt.show()
Sie können mit sehen Rufen Sie 1 auf der linken Seite an Sie können jedes Achsenobjekt zurückgeben, jedoch mit Anruf 2 auf der RHS Sie können nur bis zu Index = 9 zurückgeben, wodurch die Subplots j), k) und l) mit diesem Aufruf unzugänglich werden.
pos ist eine dreistellige Ganzzahl, wobei die erste Ziffer die Anzahl der Zeilen, die zweite die Anzahl der Spalten und die dritte den Index des Subplots angibt. dh fig.add_subplot(235) ist dasselbe wie fig.add_subplot(2, 3, 5). Beachten Sie, dass alle Ganzzahlen kleiner als 10 sein müssen, damit dieses Formular funktioniert.
Anruf 3
In seltenen Fällen kann add_subplot mit einem einzigen Argument aufgerufen werden, einer Subplot-Achseninstanz, die bereits in der vorliegenden Figur erstellt wurde, sich aber nicht in der Achsenliste der Figur befindet.
Aufruf 4 (seit 3.1.0):
Wenn keine Positionsargumente übergeben werden, ist der Standardwert (1, 1, 1).
dh Reproduzieren des Anrufs fig.add_subplot(111) in der Frage. Dies richtet im Wesentlichen ein 1 x 1-Raster von Subplots ein und gibt das erste (und einzige) Achsenobjekt im Raster zurück.
13997900cookie-checkWas bedeutet das Argument in fig.add_subplot(111)?yes
Hallo. Haben Sie eine Antwort gefunden, was bedeutet bitte fig.add_subplot(111)?
– Durchschn
28. November 2021 um 20:33 Uhr