Seite 1 von 1

3d Daten visualisieren

Verfasst: Dienstag 8. April 2008, 19:20
von student84
Hallo zusammen,

ich habe mit wxPython eine Benutzeroberfläche programmiert und benutze die durch den Benutzer eingegebenen Daten um damit ein C-Programm zu starten. Den daraus berechneten Datensatz möchte ich 3dimensional visualisieren und über die GUI anzeigen. Wichtig wäre, dass das Diagramm gedreht werden kann.

Habt ihr Tipps mit welchem Tool ich das am besten umsetzen kann? Ist gnuplot dafür geeignet, und/oder gibt es besseres?

Grüße

Verfasst: Dienstag 8. April 2008, 19:45
von mkesper
matplotib bzw. pylab kommt mir spontan in den Sinn.
Hier ein Beispiel zu 3d mit matplotlib.

Verfasst: Dienstag 8. April 2008, 20:27
von Sr4l
Mir kommt auch was spontan in den Sinn :-)
Habe noch nie versucht Visual Python in irgend etwas zu integrieren, aber die Beispiele die dabei sind zeigen was es alles so kann.

http://www.vpython.org/

Verfasst: Mittwoch 9. April 2008, 08:18
von Rebecca
http://www.opendx.org/ Hab's noch nie benutzt, aber es gibt auch eine Python-API dafuer.

Verfasst: Mittwoch 9. April 2008, 12:38
von Lufia
Was für Daten sind es geanu? Du sprichst von 3D bzw. einem Diagramm.

Wenn es Diagramme sind kann ich matplotlib und gnuplot empfehlen, wobei ich nur mit letzterem 3D visualisiert habe. Solange man sich eine Punktwolke anschaut ist das auch 3D ganz ok. Bei Oberflächen muss man mit gnuplot ein Netz (grid) erzeugen das halte ich für eher schlecht.

Für komplexere Sachen kann ich vtk (auch als Datenformat) empfehlen, und evtl. paraview bzw. matplolib zur Visualisierung.

Opendx ist eigenltich ganz nett, hat aber so seine Tücken. Man braucht doch 2-3 Tage um druchzublicken wie man die Sachen visualisiert. Es zickt auch leider wenn man mehr als 100 Datensätze einladen will,.... Mir schient es ist nciht mehr aktuell.

Verfasst: Mittwoch 9. April 2008, 16:16
von student84
Ich hab weit mehr als 100 Datensätze. Geht ehr an bzw über die 30000. Also scheint OpenDx ja wohl nichts zu sein?

Ich möchte beides, einmal nur die Punkte und dann eben eine durch die Punkte interpolierte Fläche 3d darstellen.

Verfasst: Mittwoch 9. April 2008, 21:35
von CM
bookmars
HTH
Christian

Verfasst: Freitag 11. April 2008, 08:19
von Lufia
Sorry das ich mich so spät melde, kann sein das man mit dx über Umwege mit Python auch mehr als 100 Datensätze einlesen kann. Oder du nutzt falls vorhanden den batch-Modus was bei der Datenmenge wohl sowieseo empfehlenswert ist.

Ich würde an deiner Stelle erstmal schauen ob gnuplot reicht.

Code: Alles auswählen

set xrange [0:1000]
set yrange [0:1000]
set xlabel "[m]"
set ylabel "[m]"
set zlabel "[Pa]"
# Generate interpolation mesh
set dgrid3d 40,40,4
#set pm3d for plotting (set pm3d map for 2D) 
set pm3d 
# set nice rainbow palette
set palette rgbformulae 22,13,-31
#set view
set view 90,0,1,1
#plot
splot "meinedataei.dat" using ($1):($2):($3) with pm3d 
Probleme gibt es bei nicht rechteckigen Punktewolken. dgrid gibt das grid an, die ersten beiden Parameter sind die Netzauflösung, der 3 gibt an wie weit Information interpoliert werden soll. Ich finde das ganze eher unsauber.