3D plot mit Gnuplot < Anwendungsprogramme < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:37 Di 13.07.2010 | Autor: | L2601 |
Ich möchte Kräfte über eine Fläche verteilt mit Gnuplot darstellen und habe dafür jeweils die Koordinaten x;y und den zugehörigen Wert der Kraft z die in drei spalten in der datei nf1.dat gespeichert sind
mit
set pm3D
splot 'nf1.dat'
bekomme ich aber nur ein punktenetz und keine durchgehende fläche hin. Bei Beispielen im Netz habe ich solche Flächen nur gefunden, wenn eine Funktion definiert wurde und keine Daten eingelesen werden. Kann mir jemand sagen, wie ich mir meine Daten als Fläche einzeigen lassen kann?
|
|
|
|
Hallo!
Endlich nochmal ne Gnuplot-Frage :D
Das Problem ist, daß Gnuplot zum Zeichnen von Oberflächen Daten braucht, die auf einem Gitternetz liegen.
Zeichnest du eine 3D-Funktion, so macht er sich intern eine Tabelle von (x,y,z)-Werten, wobei er in x und y eine gewisse Anzahl von Punkten benutzt, ich glaube, es sind 10. Du kannst das ändern mit
set isosamples 100
dann macht er 100x100 Punkte. (Für 2D-Plots nimmt er 100 Punkte, das kann mit "set samples 1000" geändert werden)
Wenn du nun Daten plotten möchtest, gibt es zwei Wege.
Entweder geben die Daten kein vollständiges Gitter in x und y ab, dann kann man Gnuplot veranlassen, eine Oberfläche zu berechnen, welche die Datenpunkte enthält. Wie das geht, weiß ich grade nicht auswendig, kann aber mal schaun. Ich weiß nur, daß er daran dann ewig rechnet, und das ERgebnis eher mäßig ist.
Am besten liegen die Daten aber in einem Gitter vor, dann muß man Gnuplot aber mitteilen, wann ne neue "Zeile" beginnt, das macht man mit zwei Leerzeilen, also so:
1 1 1
1 2 3
1 3 4
2 1 3
2 2 4
2 3 5
3 1 4
3 2 5
3 3 6
und dann
splot 'datafile.csv' using 1:2:3 with pm3d
alternativ, wenn dir die Farbcodierung reicht, und du die 3D-Oberfläche nicht willst, kannst du das auch mit
plot 'datafile.csv' u 1:2:3 w image
plotten.
|
|
|
|