Hallo zusammen, derzeit versuche ich mit gnuplot 4.4 eine sequenz von plots zu erstellen, um diese hinterher zu einem gif/movie etc. zusammenzubasteln. Jetzt suche ich ein skript, das mir (durchnummerierte) nameXXX1.png o.ä. aus meinem datenfile erstellt. ich dachte an irgendeine form der for-schleife oder so?? viel dank schonmal für die hilfe!!
Hallo, du kannst Schleifen bei gnuplot dadurch erstellen, das du den Schleifenteil in eine eigene Plotdatei legst, diesen dann von der Hauptplotdatei mit dem load Befehl aufrufst und z.B. eine Schleifenvariable im Hauptteil anlegst, die dann jedes mal von dem Schleifenteil um eins hochgezählt wird. Sobald diese Variable dann die Obergrenze erreicht hat wird der Schleifenteil nicht mehr aufgerufen. Gibt dazu auch Beispiele im Netz. Falls du keine Datenpunkte sondern nur Funktionen animieren willst kannst du dir das Programm Graph anschauen, das kann direkt avi Videos erstellen und ist ebenfalls kostenfrei. Für wechselnde Ausgangsdateinamen der darzustellenden Daten hatte ich mir ein kleine Programm(Skript) geschrieben, das gewisse Strings in einer Vorlage durch die entsprechenden Dateinamen ersetzt. Falls daran interesse besteht müsste ich das kurz überarbeiten und dann kompilieren, wäre aber kein Problem, ist allerdings nicht sehr sonderlich schön geschrieben. Gruß Kai
In Gnuplot 4.6 gibt es "richtige" Schleifen. Hier ist ein kleines Beispiel, das 3 PNGs mit Sinuskurven unterschiedlicher Periodenlänge erzeugt:
1 | set terminal png |
2 | do for [i=1:3] { |
3 | set output sprintf('plot%d.png', i) |
4 | plot sin(i*x) |
5 | } |
Hallo nochmal! Vielen dank für eure antworten! ich konnte dann heute doch noch unseren admin überzeugen auf gnuplot 4.6 zu wechseln, was das problem der syntax in der schleife ganz gut behoben hat. leider hat sich ein weiteres problem ergeben, das ich vorher gar nicht bedachte hatte. ich habe die daten in array-form gespeichert, um daraus ein image zu erstellen, das je nach int-wert des array elements eine anders farbiges pixel setzt (mifhilfe des with image befehls). wahrscheinlich muss ich die daten iwie anders abspeichern, damit es klappt... vielen dank nochmal!
Folgendes habe ich mir gerade zusammengegoogelt.
1 | reset |
2 | set term gif animate |
3 | set output "animate.gif" |
4 | n=24 #n frames |
5 | do for [i=0:n]{ |
6 | plot 'mult-set-data-array-file.dat' index (i) with image |
7 | } |
8 | set output |
aber nicht selber ausprobiert.
mit der for-schleife versuche ich es auch gerade... ich würde halt gerne jede einzel matrix erst in einem einzel bild abspeichern.. wenn die datei.dat so aussieht: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 hätte ich gerne 3 verschiedene bilder/images..das kann ja eigentlich nicht so schwierig sein, aber iwie check ichs nicht. habe mir das so in etwa gedacht, klappt leider nicht :D mit der every-option bekomme ich auch nicht, was ich will... n=0 do for [t=0:2] { n=n+1 outfile = sprintf('movie/array%03.0f.png',n) set output outfile plot 'array.out' matrix with image }
habs jetzt hinbekommen, indem ich den index befehl benutzt habe!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.