ubuntuusers.de

Gnuplot - Messdatendarstellung

Status: Gelöst | Ubuntu-Version: Lubuntu 12.10 (Quantal Quetzal)
Antworten |

walter33

Avatar von walter33

Anmeldungsdatum:
13. Januar 2009

Beiträge: 138

Wohnort: Strasshof bei Wien

Hallo Forum!

Ich möchte eine zweidimensionale Messdatenreihe (liegt als CSV vor) als 3D-Grafik darzustellen.

Gnuplot scheint mir da am fähigsten und vor allem am flexibelsten, weil es sehr schön automatisierbar ist. Leider ist das Programm nicht trivial und ich würde gerne schneller zu einem Erstergebniss kommen als durch Lesen von 250 Seiten Manual.

Hat jemand einen Tipp für mich, womit ich da am besten Anfange?

Vielen Dank in vorhinein!

jug Team-Icon

Ehemalige
Avatar von jug

Anmeldungsdatum:
19. März 2007

Beiträge: 12335

Wohnort: Berlin

walter33 schrieb:

Ich möchte eine zweidimensionale Messdatenreihe (liegt als CSV vor) als 3D-Grafik darzustellen.

Wie stellst du dir das dann vor? Also wie machst du da aus zwei Dimensionen plötzlich drei?

Gnuplot scheint mir da am fähigsten und vor allem am flexibelsten, weil es sehr schön automatisierbar ist. Leider ist das Programm nicht trivial und ich würde gerne schneller zu einem Erstergebniss kommen als durch Lesen von 250 Seiten Manual.

Das Programm ist in der Tat nicht trivial, deshalb gibt es aber viele Beispiele, zum Beispiel hier: http://gnuplot.sourceforge.net/demo_4.4/

Hat jemand einen Tipp für mich, womit ich da am besten Anfange?

Am besten fängst du damit an uns etwas genauer zu beschreiben, wie deine Messdaten aussehen und was für ein Ergebnis du dir da erwartest. Andernfalls können wir dich auch nur auf das Manual verweisen.

~jug

walter33

(Themenstarter)
Avatar von walter33

Anmeldungsdatum:
13. Januar 2009

Beiträge: 138

Wohnort: Strasshof bei Wien

jug schrieb:

Wie stellst du dir das dann vor? Also wie machst du da aus zwei Dimensionen plötzlich drei?

10 x 10 Messwerte = x und y der gemessenen Fläche (zweidimensional). Der Messwert selbst ist z, die dritte Dimension. Damit läßt sich ein schönes dreidimensionales (vielleicht auch noch färbiges) Gebirge der zweidimensional ausgemessenen Fläche darstellen. Ganz ohne Zauberei sind es jetzt plötzlich 3 Dimensionen... (etwa so wie das Bild im Anhang)

zum Beispiel hier: http://gnuplot.sourceforge.net/demo_4.4/

Danke vielmals für den Link, da hab ich sogar schon drin gesucht aber nichts gefunden. (Vielleicht schau ich noch mal genauer durch)

Ist ja alles recht nett, nur werden da immer irgend welche Funktionen verwendet, um die Grafik darzustellen. Ich habe, wie ich sagte, eine Datei, wo für jeden Punkt der Grafik ein Wert drin steht. Nur wie mach ich das dem Gnuplot klar, dass es da nicht lange herumrechnen soll, weil es sich die Messwerte einfach nehmen kann. Das gibts doch nicht, dass das nicht vorgesehen ist?

Schöne Grüße

PS: Hab grad bemerkt, beim beigelegten Bild ist in der Farbe noch eine 4. Dimension realisiert. Mir würde genügen, wenn die Höhe, des Gebirges einer Farbe entspricht.

Bilder

Skittles

Avatar von Skittles

Anmeldungsdatum:
6. April 2006

Beiträge: 599

Wohnort: Bochum

Im Endeffekt ist es nicht so kompliziert Daten aus einer Datei zu plotten. Ein kleines Beispiel:

1
2
set datafile separator "\t"
plot "spectra.csv" using 1:2 title "Anregungsspektrum" with line, "spectra.csv" using 1:3 title "Emissionsspektrum" with line

Der datafile separator gibt an, wie die Daten getrennt sind, hier ein Tabstop. Hier werden zwei Kurven aus spectra.csv geplottet, durch using werden die "Spalten" definiert (Also erstmal Spalte 2 gegen 1 und dann noch 3 gegen 1). Bei 3D-Daten wäre es dann x:y:z. title "foobar" kann du ggf. durch notitle ersetzen und with line durch dein 3D-Format, schau dir da die Demo-Seite an.

walter33

(Themenstarter)
Avatar von walter33

Anmeldungsdatum:
13. Januar 2009

Beiträge: 138

Wohnort: Strasshof bei Wien

Skittles schrieb:

Im Endeffekt ist es nicht so kompliziert Daten aus einer Datei zu plotten.

Wie bei allem, was man kann. (aber ich kann es leider noch nicht!)

... schau dir da die Demo-Seite an.

Wird wohl die einzige kongrete Hilfe sein... 😢

Danke trotzdem für die Mühe.

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

walter33 schrieb:

Wird wohl die einzige kongrete Hilfe sein... 😢

Könnte sein, zumindest solange du nicht z.B. dein CSV-File her zeigst und anhand der Daten beschreibst, wie du dir in etwa die Ausgabe vorstellst. 😉

jug Team-Icon

Ehemalige
Avatar von jug

Anmeldungsdatum:
19. März 2007

Beiträge: 12335

Wohnort: Berlin

walter33 schrieb:

10 x 10 Messwerte = x und y der gemessenen Fläche (zweidimensional). Der Messwert selbst ist z, die dritte Dimension.

Also hast du dreidimensionale Daten. 😉

Um dir wirklich helfen zu können wäre wirklich wichtig zu wissen, wie genau deine Daten aussehen und wie du dir die Darstellung vorstellst.

Nehmen wir für den Moment mal an, dass du drei Spalten hast, x, y und z (oder in Gnuplot-Logik: 1, 2 und 3). Dann könnte ein einfacher Plot deiner Datei so aussehen:

splot data.csv using 1:2:3 

Nun weiß ich aus dem Kopf nicht, ob Gnuplot CSV-Dateien verarbeitet, oder ob du vorher noch das Trennzeichen irgendwo definieren musst. Das Format der Zahlen könnte auch eine entscheidende Rolle spielen. Zum Beispiel Punkt oder Komma als Dezimaltrennzeichen. Oder, da es sich anscheinend um Messdaten aus einer Versuchsanordnung handelt, sind die Messwerte vielleicht in Wissenschaftlicher Notation?

Und schließlich willst du die Darstellung sicher beeinflussen, dazu benötigt es dann wieder weitere Steuerbefehle in deinem Gnuplot-Skript. Wie schon ausgeführt, entweder du sagst uns möglichst genau, was du hast und was daraus werden soll, oder du musst ins Handbuch schauen. Um ein wenig Arbeitsaufwand wirst du nicht drumrum kommen.

~jug

walter33

(Themenstarter)
Avatar von walter33

Anmeldungsdatum:
13. Januar 2009

Beiträge: 138

Wohnort: Strasshof bei Wien

Natürlich ist das kein Problem, das CSV herzuzeigen. Ich hab einfach nicht daran gedacht, dass das Verständnissschwierigkeiten auslösen kann. Es zeigt sich immer wieder das alte Problem, dem ich da aufgesessen bin, obwohl ich es selbst nur zu genau kenn: Was man kennt kann man nur mehr schlecht erklären, erklären können ist erst die nächste Stufe. (Dort war ich noch nicht... 🙄 ) So etwa gehts mir auch mit der Gnuplot-Beschreibung. Es kommt das Gefühl auf, dass man erst beim 3. Mal vollständig durchlesen schön langsam eine Ahnung bekommt, warum es geht. Eine Hürde vieler guter Programme.

Zum CSV:

Das CSV (im Anhang) enthält Daten in 10 Spalten und 10 Reihen, die auf einer Fläche von 10 x 10 Punkten als (vielleicht auch noch farbcodiert wäre super) Gebirge in 3D (etwa so wie das Bild im Anhang) dargestellt werden sollen. (Hab ich es jetzt geschafft, das verständlich rüber zu bringen?)

Ich bitte um Verzeihung für die durch Unklarheit hinterlassene Verwirrung. Ich gelobe Besserung!

Schöne Grüße!

plot.csv (725 Bytes)
Download plot.csv
Bilder

Prof._Frink

Anmeldungsdatum:
29. Mai 2010

Beiträge: 1096

Hey,

erstmal erzeugst du mit

cat 5570587-plot.csv | tr ",;" ". " > matrix.dat

die Datei matrix.dat. Dann speicherst du den Code

set terminal pngcairo 
set palette rgbformulae 21,22,23
set pm3d implicit at s

set output "plot1.png"
splot "./matrix.dat" matrix w lines

set xrange [0:8]
set yrange [0:8]

set output "plot2.png"
splot "./matrix.dat" matrix w lines

in der Datei matrix.gp im selben Verzeichnis wie matrix.dat, wechselst in das Verzeichnis und führst

gnuplot matrix.gp

aus, dann erhältst du die Bilder im Anhang.

Grüße

Frink

Bilder

walter33

(Themenstarter)
Avatar von walter33

Anmeldungsdatum:
13. Januar 2009

Beiträge: 138

Wohnort: Strasshof bei Wien

Hallo Prof. Frink!

Vielen Dank für deine ausführliche Antwort. Das löst mein Problem mal fürs erste. Mit dem Script hab ich auch einen Anhaltspunkt, wo ich weiterforschen kann. Langfristig werde ich mir sicher die ganze Beschreibung von Gnuplot verinnerlichen, aber damit hab ich mal ein erstes Erfolgserlebniss, dass ich für die Vorstellung der Messergebnisse am Montag gut gebrauchen kann und ohne deine Hilfe nicht geschafft hätte. Damit weiß ich wenigstens mal, wie die entscheidenden Befehle heißen und kann weiter daran feilen.

Schönen Dank und viele Grüße, natürlich auch allen, die mit Rückfragen erstmal dafür gesorgt haben, dass auch eine brauchbar verständliche Frage zustande kam.

Walter

Antworten |