matplotlib

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
antimicro
User
Beiträge: 151
Registriert: Sonntag 29. Februar 2004, 16:24

Hi,
ich schau mir gerade das matplotlib Modul an. Scheint ja recht komplex zu sein :shock:

Ich suche die ganze Zeit in der Doku wie ich das Modul Objektorientiert benutze. Wenn ich einen Plot zeichne, dann hätte ich gern ein Objekt an dem ich dann die Achsen beschrifte usw.

Leider sind die Beispiele eher struktoriert.

Hat jemand ne Idee wie ich z.B. zwei Plots zeichne mit unterschiedlichen Eigenschaften?
Zuletzt geändert von antimicro am Freitag 18. August 2006, 14:00, insgesamt 2-mal geändert.
greetings
sebi
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi antimicro,

Was meinst Du denn damit?
Leider sind die Beispiele eher stucktoriert.
Zu Deinen Fragen:

Nicht OO-mäßig z. B. so:

Code: Alles auswählen

pylab.grid(True)
pylab.errorbar(x_array,y_array,None,error,fmt='k.')
pylab.plot(x_array,y_array,'r-')
pylab.ylabel('y_label')
pylab.xlabel('x_label')
pylab.title('titel') 
pylab.text('Dir ueberlassen')
pylab.savefig('deinfile.eps')
# und dann ein pylab.close() und dann weiter
und OO:

Code: Alles auswählen

#für zwei subplots
from matplotlib.figure import Figure
fig = Figure(figsize=(7,5),dpi=100)
a = fig.add_subplot(211)
b = parent.fig.add_subplot(212)
# na ja und bei verschiedenen plots einfach mehrer Figure-Instanzen anlegen.
a.semilogy(x.ichannel,x.intensity)
#... .... ...... ........ usw.
Im Übrigen kann ich das "User's Guide'" sehr empfehlen. Du hast Recht: Am Anfang ist es etwas verwirrend, aber dann ...
Und außerdem ist die Mailingliste wirklich toll: Keine noch so dumme Frage, die man mir nicht beantwortet hätte (viel kompetenter, als ich Dir hier antworten kann!).

Gruß,
Christian
antimicro
User
Beiträge: 151
Registriert: Sonntag 29. Februar 2004, 16:24

Hi,
ja das meinte ich. Das Modul hatte ich gerade erst runtergeladen und pylab und matplotlib.* waren mir fremd.

Ich lese mich jetzt durch die Doku durch :shock: das ist wohl nicht gerade wenig!

Hat vielleicht jemand ne Idee wie ich die X-Achse beschriften kann? In meinem Array hab ich viele UnixTimestamps. Die müssen ja erst umgewandelt werden (keiner will einen reinen Timestamp auf der X-Achse). Gibt es eine fertige Fkt., oder von Hand umwandeln?
greetings
sebi
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

suchst Du so etwas?

Falls Dir das (und die Demo ;-) ) nicht weiterhilft poste doch mal einen kleinen Auszug aus Deinem array und beschreibe wie Du das geplottet haben möchtest.

Gruß,
Christian
antimicro
User
Beiträge: 151
Registriert: Sonntag 29. Februar 2004, 16:24

Das eigentliche Problem ist ein Array mit Tupeln (Timestamp, Wert). Die Tupel werden meist alle 5 Sekunde aber durchaus auch mal alle 30 etc. Sekunden aufgenommen. Der Abstand ist also nicht konstant. Jetzt möchte ich einen Graph der den Tagesverlauf anzeigt.

Dazu brauche ich am besten einen Array mit Feldern für jede Minute des Tages. Das Ursprüngliche Array muss also seine Werte (wenn vorhanden) zusammenfassen und in das neue Array kopieren (zu der passenden Minute).

gar nicht so schwer,oder ?
greetings
sebi
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Ja, aber ich würde eine andere Herangehensweise wählen: Warum sich die Mühe machen neue Arrays anzulegen, dreimal miteinander zu verquirlen und dann den Logarithmus ziehen, bevor man plotted?
matplotlib bietet die Möglichkeit mit set_xlim(linker Delimiter, rechter Delimiter) den Bereich zu wählen, über den sich der Plot erstrecken soll. M.a.W. Du übergibst ein array mit unregelmäßig verteilten x-Werten und zwingst matplotlib anschließend dazu die Abstände anzupassen. In deinem Fall also die Minute Null (Mitternacht) bis zur Minute 1440.

Gruß,
Christian
antimicro
User
Beiträge: 151
Registriert: Sonntag 29. Februar 2004, 16:24

Hi,
fein, die Fkt. kenn ich noch gar nicht. Danke! Ist schon verblüffend was matplot alles kann -der reine Wahnsinn! :shock:

Ich habs jetzt schnell mit dem weiteren Array geschrieben. Jetzt kann ich die Auflösung auch anpassen etc. Mal schauen was set_xlim kann...
greetings
sebi
Antworten