600 Stimmen

Was bedeutet in Matplotlib das Argument in fig.add_subplot(111)?

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()

Das ergibt:

Example plot produced by the included code

Ich habe die Dokumentation wie verrückt durchgelesen, aber ich kann keine Erklärung für die 111 . manchmal sehe ich eine 212 .

Was bedeutet das Argument der fig.add_subplot() bedeuten?

637voto

SaiyanGirl Punkte 15062

Ich denke, dass dies am besten durch das folgende Bild erklärt werden kann:

enter image description here

Um das oben genannte zu initialisieren, würde man 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()

626voto

Constantin Punkte 26508

Dies sind Parameter für das Teilflächenraster, die als eine einzige ganze Zahl kodiert sind. Zum Beispiel bedeutet "111" "1x1-Raster, erste Teilfläche" und "234" "2x3-Raster, vierte Teilfläche".

Alternative Form für add_subplot(111) es add_subplot(1, 1, 1) .

55voto

DaveTM Punkte 696

Die Antwort von Constantin ist genau richtig, aber für mehr Hintergrund dieses Verhalten ist von Matlab geerbt.

Das Verhalten von Matlab wird im Abschnitt Figure Setup - Anzeige mehrerer Plots pro Abbildung Abschnitt der Matlab-Dokumentation.

subplot(m,n,i) zerlegt das Abbildungsfenster in eine m-mal-n-Matrix von kleinen Unterdiagrammen auf und wählt das entsprechende Unterdiagramm für das aktuelle Diagramm aus. Die Plots werden in der obersten Zeile des Abbildungsfensters nummeriert, dann in der zweiten Reihe, und so weiter.

40voto

yoonghm Punkte 3302

Meine Lösung ist

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()

2x2 grid with 1 and 3 merge

34voto

Pritz Punkte 392

enter image description here

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 die erste Teilfläche in einem Layout, das 3 Zeilen und 2 Spalten hat.

Die drei Diagramme in der ersten Spalte bezeichnen die 3 Zeilen. Das zweite Diagramm befindet sich direkt unter dem ersten Diagramm in derselben Spalte und so weiter.

Die letzten beiden Parzellen haben Argumente (2, 2) bedeutet, dass die zweite Spalte nur zwei Zeilen hat, bewegen sich die Positionsparameter zeilenweise.

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