Seite 1 von 1

Editor, Plot (matplotlib) und Codefrage

Verfasst: Montag 19. Oktober 2009, 14:13
von Sirius
Hallo, ich habe ein paar einfache?? Fragen :-)

1. was ist besser, bzw wo liegen die Unterschiede:

Code: Alles auswählen

i=1
a=str(i)
figname='fig%s.eps' % (a)
figure='fig'+a+'.eps'
Das ganze natürlich in einem beliebigen loop

2.
Gibts eine Möglichkeit um in einem loop bei jedeme Durchgang einen Plot darzustellen?
Was ich bis jetzt gelesen habe geht das nicht und man kann die Grafik nur abspeichern. Wäre aber trotzdem toll, wenn das ginge ;-) Gibts da was wovon ich noch nichts weiss?

3.
Gibts eigentlich einen editor, wo man die Einzüge automatisch machen lassen kann? In Matlab gibts ja zB sowas wo man einfach schön den Text markiert, dann rechtsklick: "Smart indent" und dann passt alles. Ich nehme aber mal an das geht nicht in python, da man ja das Ende einer Schlaufe nicht markiert... schade ;-) Ich weiss, gibt vor und nachteile, dass das in python so is...

Vielen Dank für eure Hilfe!

Verfasst: Montag 19. Oktober 2009, 14:21
von CM
Hallo und willkommen im Forum,

ad 1. Das ist ein bißchen Geschmackssache, allerdings:

Code: Alles auswählen

'fig%d.eps' % (a)
, dann mußt Du nicht str() aufrufen. Und Stringformatting ist allemal üblicher als Stringconcatenation (, wenn ich das mal so eindeutschen darf ;-). )

ad 2. Ja, wo liegt denn Dein Problem?

ad 3. http://wiki.python.org/moin/PythonEditors zeigt einen Haufen Editoren. Allerdings gehört in Python die Einrückung zur Syntax, folglich gibt es keinen Editor der die Einrückung raten kann - außer vielleicht Emacs (Vorsicht: Nicht ernst gemeint!). ;-)

Gruß,
Christian

Verfasst: Montag 19. Oktober 2009, 14:28
von Sirius
zu 1.
oups, ja ist ja eigentlich klar...

zu 2.
Nun, wenn ich in einer Schlaufe einen Plot darstelle, läuft das Programm nicht weiter.

Einfaches Beispiel:

Code: Alles auswählen

#!/usr/bin/env python	
# Beispiel 1: Plot der Sinusfunktion
import pylab as p		# Import des Moduls pylab und Umbenennung zu p
x = p.arange(0,7,0.01)	# 
y = p.sin(x)            # Berechnung der y-Werte als Funktion von x
for i in range(10):
    p.plot(x,y)			# Erzeugung des Plots (im Speicher)
    
    print i
    p.show()	
Er plottet die Funktion nur einmal. In Realität möchte ich dann natürlich schon mit jedem Durchlauf was neues darstellen.


Edit: Ah okay, hab gemerkt, dass wenn ich den Plot schliesse, die Schlaufe weiterläuft. Jetz sollte das ganze nur noch automatisiert sein... also paar Sekunden bild sehen, Schlaufe läuft weiter... mal schaun.

Verfasst: Montag 19. Oktober 2009, 14:35
von CM
Ok, kannst ja rumprobieren und Dich melden wenn Du Schwierigkeiten hast. Ein Tipp noch: Schau mal in die Beispiele zum Thema Animation.

Verfasst: Montag 19. Oktober 2009, 16:12
von ms4py
Sirius hat geschrieben: Edit: Ah okay, hab gemerkt, dass wenn ich den Plot schliesse, die Schlaufe weiterläuft. Jetz sollte das ganze nur noch automatisiert sein... also paar Sekunden bild sehen, Schlaufe läuft weiter... mal schaun.
Dazu musst du matplotlib im interaktiven Modus starten

Code: Alles auswählen

matplotlib.interactive(True)
Und je nach Backend dann mit dem FigureManager ein paar Sachen anstellen

Code: Alles auswählen

matplotlib.pyplot.get_current_fig_manager()