Seite 1 von 1

Verständnisfrage zur matplotlib

Verfasst: Mittwoch 2. September 2009, 12:28
von reyungoo
Hallo Forum,
wenn ich die Farbe des figure-Hintergrundes bei meinen Plots ändern möchte, kann
ich das z.B. so machen:

Code: Alles auswählen

fig = plt.figure() #plt.figure creates a matplotlib.figure.Figure instance
rect = fig.patch # a rectangle instance
rect.set_facecolor('green')]
plt.show()
oder ich mache das gleich mit dem kwarg facecolor=' ' in plt.figure()

aber sollte es nicht auch so gehen:

Code: Alles auswählen

from matplotlib.figure import Figure
fig = Figure(figsize=(5,5), edgecolor='red', bla bla)
rect = fig.patch 
rect.set_facecolor('green')
plt.show()
Geht aber nicht. Es poppt kein grünes Fenster auf, aber es gibt auch keine Fehlermeldung. Irgendwas hab ich wohl noch nicht verstanden. Ihr könnt
sicher helfen.

beste Grüße

Verfasst: Mittwoch 2. September 2009, 14:00
von CM
Hinweis: Was hat - im zweiten Beispiel - 'plt' mit 'fig' zu tun? Bzw. was 'rect' mit 'plt'? Na? ;-)

Verfasst: Mittwoch 2. September 2009, 14:34
von reyungoo
Was hat - im zweiten Beispiel - 'plt' mit 'fig' zu tun? Bzw. was 'rect' mit 'plt'?
Ich weiß ja nicht einmal was -im ersten Beispiel- 'plt' mit 'fig' zu tun hat.

Ich verstehe deinen Hinweis nicht.

Verfasst: Mittwoch 2. September 2009, 14:52
von CM
Ok. Im ersten Fall ist 'fig' eine Instanz von 'plt.figure', 'rect' eine "Sub"-Instanz von 'fig'. 'plt' "weiß" daher was 'fig' ist und 'fig' was 'rect' ist. Klar soweit?

Im zweiten Beispiel ist 'fig' eine Instanz von 'matplotlib.figure.Figure' - und das macht den Unterschied. Üblicherweise kann man diese Instanz z.B. in eine 'Canvas'-Instanz eines GUI-Toolkits setzen und so anzeigen. Dafür ist es ursprünglich mal gemacht worden: pylab als prozedurales und matplotlib als OO interface. Außerdem hast Du mit dem OO interface eine detailliertere Kontrolle - mußt aber dafür auch mehr Code schreiben.

HTH
Christian

Verfasst: Donnerstag 3. September 2009, 09:54
von reyungoo
Danke CM,
ich willl nicht behaupten, dass ich es verstanden habe, aber ich erahne was du mir sagen willst. Ich werde mich weiter reinarbeiten.