2012-11-23 10 views
5

Wenn ich eine Figur mit einer Farbleiste, wie zB der ellipse collection der Matplotlib-Galerie, zeichne, versuche ich die Geometrie der Figur zu verstehen. Wenn ich den folgenden Code in den Quelltext (statt plt.show()) hinzufügen:Geometrie der Farbbalken in Matplotlib

cc=plt.gcf().get_children() 
print(cc[1].get_geometry()) 
print(cc[2].get_geometry()) 

bekomme ich

(1, 2, 1) 
(3, 1, 2) 

verstehe ich die erste - 1 Zeile, zwei Spalten, Grundstück erste (und vermutlich die die zweite ist die Farbleiste), aber ich verstehe die zweite nicht, was ich erwarten würde (1,2,2). Was entsprechen diese Werte?

Edit: Es scheint, dass die Elemente in cc nicht die gleichen Achsen haben, die die Diskrepanzen erklären würde. Irgendwie bin ich immer noch verwirrt mit den gemeldeten Geometrien.

+0

Meine Ausgabe ist anders; Ich bekomme '(1,1,1)' und die zweite 'print' Anweisung gibt eine Ausnahme,' AttributeError: 'Axes' Objekt hat kein Attribut 'get_geometry'. – egpbos

Antwort

2

Was passiert, wenn Sie colorbar nennen, use_gridspec standardmäßig True, die dann einen Aufruf an matplotlib.colorbar.make_axes_gridspec machen, die dann ein 1 durch 2 Gitter erzeugt die Handlung und cbar Achsen halten dann dann cbar Achse selbst ist eigentlich ein 3 um 1 Gitter das hat das Seitenverhältnis

der Schlüssel Linie in matplotlib.colorbar.make_axes_gridspec eingestellt, die dies ermöglicht, ist

gs2 = gs_from_sp_spec(3, 1, subplot_spec=gs[1], hspace=0., 
         height_ratios=wh_ratios) 

weil wh_ratios == [0.0, 1.0, 0.0] standardmäßig so die beiden anderen Handlungsstränge über und unter 0 mal die Größe des mittleren Grundstück sind.

Ich habe setzen, was ich tat dies, um herauszufinden, in an IPython notebook

+0

Ich bemerkte, dass, wenn ich die 'colorbar()' Funktion rufe, ein 'ax'-Argument: 'plt.colorbar (etw, ax = ax)', wird die Geometrie von 'ax' geändert, z. Ax wird erstellt "ax = fig.add_subplot (2,3,4)", dann wird nach dem Farbbalken-Plotten seine Geometrie immer auf "(2,1,1)" geändert, ich denke (2,1,1) ist die Zeichnung selbst, und (2,1,2) ist die Farbleiste. Wenn ich ein neues 'ax2 = fig.add_subplot (2,3,4)' erstelle, ist die Geometrie von ax2 wieder (2,1,1). Könnte dies als ein Fehler angesehen werden? – Jason

Verwandte Themen