Seite 1 von 1

Gnuplot via Python

Verfasst: Mittwoch 1. September 2004, 14:59
von Refugee
Hat jemand Erfahrung mit der Verwendung von Gnuplot (zur Darstellung von Daten und fit derselben) mittels Python unter Windows?

Ich denke, ich habe alles installiert, aber ich kann Gnuplot nicht von Python aus ansteuern.

Fürs erste wäre ich schon zufrieden wenn ich zB von Python aus eine sin(x) - Kurve darstellen könnte.
In Gnuplot schreibt man einfach "plot sin(x)".

Verfasst: Mittwoch 1. September 2004, 15:19
von mawe
Hi!

Es gibt ein Modul namens Gnuplot. Ansonsten hier ein kleines Beispiel ohne dem Modul:

Code: Alles auswählen

import os
f = os.popen('gnuplot','w')
print >> f, "set yrange[-300:300]"
for n in range(300):
	print >> f, "plot %i*cos(x)+%i*log(x+10)" % (n,150-n)
f.flush()
UPDATE: Hier ist noch Dein sin(x):

Code: Alles auswählen

import os
f = os.popen('gnuplot -persist','w')
print >> f, "plot sin(x)"
PS: Ich hab das nur unter Linux getestet, keine Ahnung ob es so auch unter Windows funktioniert.

Gruß, mawe

Verfasst: Freitag 28. Januar 2005, 17:13
von Leonidas
mawe hat geschrieben:PS: Ich hab das nur unter Linux getestet, keine Ahnung ob es so auch unter Windows funktioniert.
Das gnuplot Binary, dass ich habe (aus Maxima 5.9.1) geht nicht, das will nicht recht mit Pipes, aber es gibt pgnuplot. Bei Bedarf kann ich es kompilieren und hochladen, dann bitte PM an mich.

Verfasst: Freitag 28. Januar 2005, 17:16
von mawe
Hi Leonidas!

Funtioniert's mit dem Gnuplot-Modul auch nicht?

Gruß, mawe

Verfasst: Freitag 28. Januar 2005, 17:28
von Leonidas
mawe hat geschrieben:Funtioniert's mit dem Gnuplot-Modul auch nicht?
Von "auch" nicht kann nicht die Rede sein, den wenn man statt gnuplot in deinem Beispiel pgnuplot nimmt, dann wird die gnuplot GUI wgnuplot aufgerufen und plottet schon richtig. Doof nur, dass das Script sich recht schnell sich beendet, somit auch den gnuplot Prozess killt.

Code: Alles auswählen

import os
f = os.popen('pgnuplot -persist','w')
print >> f, "plot sin(x)" 
f.flush()
while True:
    pass
Nun, dieser Code läuft bei mir.. aber nur manchmal: manchmal öffnet er zweimal wgnuplot und macht gar nichts, einmal öffnet er ein wgnuplot und tut genauso wenig und manchmal läuft es genau richtig.

Das gnuplot Modul braucht Numeric, und da habe ich jetzt nicht so wahnsinnig viel Lust des zu installieren.. aber wenn du willst kann ich das schon machen und testen.

Verfasst: Freitag 28. Januar 2005, 17:36
von mawe
Hi Leonidas!

Nöö, mach dir wegen mir keine Umstände :wink:. War nur rein interessehalber. Bei mir funktionierts ja (hihi :D).

Gruß, mawe

Verfasst: Freitag 28. Januar 2005, 18:25
von Leonidas
Hmm, ich vermute mal das das Modul funktioniert. Aber ich nutze Gnuplot nicht aus Python, höchstens mal aus Maxima, und dafür reichts ja.

Verfasst: Samstag 5. Februar 2005, 15:17
von sonium
Leonidas hat geschrieben:
mawe hat geschrieben:Funtioniert's mit dem Gnuplot-Modul auch nicht?
Doof nur, dass das Script sich recht schnell sich beendet, somit auch den gnuplot Prozess killt.
Das selbe Problem hatte ich auch schon, weil ich gnuplot in nem extra thread aufgerufen hab und der sich ziemlich schnell beendet hatte, und dann hab ich erst mal zwei Tage gesucht wo der Fehler ist.
Bau doch alternativ am Schluss so ne warte Funktion wie

raw_input("Press Anykey to Exit")

ein.

Aber Gnuplot kann ja über

>set terminal png
>set output file.png
>replot

auch als in eine, in diesem Fall *.png, Datei exportieren.

Bei mir (win32) hat es btw ausgereicht das Gnuplot verzeichniss der $Path Variable hinzu zu fügen.