ubuntuusers.de

3D Punktewolke in Gnuplot

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

ootobbyoo

Anmeldungsdatum:
24. Juli 2013

Beiträge: Zähle...

Hallo Leute,

ich versuche verzweifelt mit Gnuplot aus einer csv in der Form

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# x y data
0,1;0,01;3,035931472
0,07;0,014;1,70259288
0,07;0,014;1,70259288
0,0568;0,01336;1,289357016
0,05584;0,015768;0,922280542
0,048112;0,0149024;0,634290969
0,0490816;0,01652032;0,48913928
0,0490816;0,01652032;0,48913928
0,0432928;0,01889056;0,474359592
0,047348992;0,018922278;0,120777433
0,047348992;0,018922278;0,120777433
0,046355092;0,02007395;0,063703482
0,046355092;0,02007395;0,063703482
0,046355092;0,02007395;0,063703482
0,046355092;0,02007395;0,063703482
0,046810804;0,020159138;0,038641261
0,046810804;0,020159138;0,038641261
0,047090312;0,019743275;0,019850582
0,047090312;0,019743275;0,019850582
0,047090312;0,019743275;0,019850582
0,047090312;0,019743275;0,019850582
0,047090312;0,019743275;0,019850582
0,046885277;0,019828528;0,016454834
0,046984458;0,019850214;0,004531136

eine 3D Punktewolke zu erstellen.

Am Ende soll das Ganze in etwa so aussehen: http://s1.directupload.net/file/d/3326/3q33479y_jpg.htm

Meine bisheriger Code, zum Teil aus Beispielen, läuft leider nicht

1
2
3
4
5
6
reset
set dummy u,v
set key inside right top vertical Right noreverse enhanced autotitles box linetype -1 linewidth 1.000
set parametric
set autoscale
splot 'points.csv' matrix 

Antiqua Team-Icon

Avatar von Antiqua

Anmeldungsdatum:
30. Dezember 2008

Beiträge: 4534

Mit Dezimal-Punkt, statt Dezimal-Komma gehts hier bei mir.

ootobbyoo

(Themenstarter)

Anmeldungsdatum:
24. Juli 2013

Beiträge: 11

stimmt, jetzt sollen die data Werte (3. Spalte) aber auf die z-Achse... kann man das über Gnuplot tauschen? Würde ungern die Datenfelder ändern, da diese automatisch erzeugt werden.

Danke erstmal

Prof._Frink

Anmeldungsdatum:
29. Mai 2010

Beiträge: 1096

Hey,

entweder in Gnuplot

set decimalsign locale
set datafile separator ";"
splot "./points.csv" u 1:2:3

oder in der Bash

cat points.csv | tr ",;" ". " > points2.csv

und in Gnuplot dann

splot "./points2.csv" u 1:2:3

Grüße

Frink

ootobbyoo

(Themenstarter)

Anmeldungsdatum:
24. Juli 2013

Beiträge: 11

Hi,

Prof. Frink. So klappt es gut, allerdings sind die Achsen immernoch nicht so, wie ich es gerne hätte.

mit z.B.

1
splot "./points.csv" u 3:1:2

bekomme ich die Achsen nicht getauscht. Gibt es da eine andere Methode???

Prof._Frink

Anmeldungsdatum:
29. Mai 2010

Beiträge: 1096

Also bei mir ist die dritte Spalte auf der z-Achse (s. Anhang) und andernfalls könnte man das auch so tauschen, wie du vorschlägst. Irgendwie verstehe ich nicht wo das Problem ist.

Bilder

ootobbyoo

(Themenstarter)

Anmeldungsdatum:
24. Juli 2013

Beiträge: 11

das ist jetzt seltsam, bei mir ist bei dem code

splot "./points.csv" u 1:2:3

die dritte Spalte auf der x-Achse...

Bilder

Prof._Frink

Anmeldungsdatum:
29. Mai 2010

Beiträge: 1096

Hm, verstehe ich jetzt auch nicht. Und durch permutieren von 1:2:3 bekommst du es nicht getauscht? Also entweder liegt es an irgendeiner Einstellung, die du vorgenommen hast (versuch es noch mal nach einem Neustart von gnuplot) oder es liegt daran, dass wir unterschiedliche Versionen nutzen (ich nutze: gnuplot 4.6 patchlevel 1), das würde mich in diesem Fall aber sehr wundern.

Grüße

Frink

ootobbyoo

(Themenstarter)

Anmeldungsdatum:
24. Juli 2013

Beiträge: 11

ich überprüfe das nochmal genau und werde berichten

Erstmal vielen Dank für deine Hilfe

ootobbyoo

(Themenstarter)

Anmeldungsdatum:
24. Juli 2013

Beiträge: 11

also, ich hatte beim ganzen Rumprobieren manuell die Spalten in der Quelldatei getauscht.

Also jetzt klappt alles!

Vielen Dank, hast mir sehr weiter geholfen.

Hier nochmal der Code:

reset

set pointsize 2

set xlabel "Wärmeübergangskoeffizient {/Symbol a}" 
set ylabel "Stoffübergangskoeffizient {/Symbol b}"
set zlabel "Fehler f"

set autoscale

set decimalsign locale
set datafile separator ";"

splot "./points.csv" u 1:2:3

ootobbyoo

(Themenstarter)

Anmeldungsdatum:
24. Juli 2013

Beiträge: 11

ich hab da gleich noch eine Frage:

die erstellten Punkte sind Teil einer Fläche:

http://s7.directupload.net/file/d/3327/orykls9d_pdf.htm

Kann ich die Punkte auch auf die erstellte Fläche setzen?

Multiplot?

ootobbyoo

(Themenstarter)

Anmeldungsdatum:
24. Juli 2013

Beiträge: 11

bin schon weiter gekommen:

set decimalsign locale
set datafile separator ";"

set table 'point_data.dat'
	unset dgrid3d
	splot './points.csv' u 1:2:3
unset table

#set pm3d implicit at s
#set pm3d interpolate 1,1 flush begin noftriangles hidden3d 100 corners2color mean
set dgrid3d 50,50,50

set output 'field.pdf'

splot './point_data.dat' u 1:2:3 w points pt 7, \
	  './field.csv' u 2:1:3 with lines lt 5 lc rgb "#000000"
	
set output
exit

so sollte es eigentlich klappen, aber die Punkte werden nicht gezeichnet ☹

hat noch jemand ne Idee???

Prof._Frink

Anmeldungsdatum:
29. Mai 2010

Beiträge: 1096

Sollte das nicht einfach so gehen:

set decimalsign locale
set datafile separator ";"
set pm3d
splot './field.csv' u 2:1:3 with p ps 0.0, './point_data.dat' u 1:2:3 w points pt 7

Ich habe die field.csv nicht, deshalb habe ich es nicht getestet.

Grüße

Frink

P.S: Für zusätzliche Fragen solltest du immer einen neuen Thread eröffnen. S. Richtig fragen

ootobbyoo

(Themenstarter)

Anmeldungsdatum:
24. Juli 2013

Beiträge: 11

hey prof. frink,

leider nein, die punkte werden nicht dargestellt..

hab die field.csv mal mit angehängt.

grüße

field.csv (268.9 KiB)
Download field.csv

ootobbyoo

(Themenstarter)

Anmeldungsdatum:
24. Juli 2013

Beiträge: 11

also, multiplot ist die lösung:

set yrange [ 0.001 : 0.027] reverse nowriteback
set xrange [ 0.01 : 0.1 ] noreverse nowriteback
set zrange [ 0 : 9 ] noreverse nowriteback

set decimalsign locale
set datafile separator ";"

set output 'field.pdf'

set multiplot
splot "points.csv" u 1:2:3 w points pt 7 not

set dgrid3d 50,50,50
splot "field.csv" u 2:1:3 with lines lt 5 lc rgb "#000000" not
unset dgrid3d
unset multiplot

set output
exit

Problem war wohl die Datentrennung mittels ";". Ohne Legende klappt es aber mit Multiplot sehr gut. Trotzdem danke für die Mühen!

Antworten |