Seite 1 von 1

3D Plot in Python welche Lib ?

Verfasst: Donnerstag 19. Juli 2018, 21:18
von g123
Hallo Leute,

Ich werde am Ende einen 4D Array haben, dieser ist so aufgebaut: 3 Koordinaten mit einem zugehörigen Wert zwischen 0-100.
Bei den Werten handelt es sich um Ultraschallmessungen, eines Körpers mit einer Bohrung drinnen, da wo ich eine Bohrung habe ist der Wert zwischen 0-100 sehr hoch und da wo ich keine Bohrung habe gegen 0..
Nun möchte ich die Bohrung in 3D plotten, ich kenne bis jetzt nur mytplotlib, ist es damit möglich denn hier steht dass es ziemlich limitiert ist: https://python-graph-gallery.com/3d/

Meine Idee ist es am Ende halt alle z.B. alle Punkte mit einer Wert größer als 20 zu Plotten, oder mit einer Farbkodierung abhängig vom Wert.
Habt ihr Erfahrungen?

Am Ende soll das ganze ungefähr so aussehen:
Bild

VIELEN DANKE FÜR JEGLICHE HILFE!!!

Re: 3D Plot in Python welche Lib ?

Verfasst: Donnerstag 19. Juli 2018, 21:25
von pixewakb
Wenn ich dem glauben darf, dann kann matplotlib das auch. Ich habe damit keine (!) Erfahrung.

https://jakevdp.github.io/PythonDataSci ... tting.html

Ferner (Google-Suche):

https://www.mantidproject.org/MantidPlo ... _in_Python

https://plot.ly/python/3d-surface-plots/

Wenn Du mich fragst: Frag konkret bei stackoverflow nach, da könnte es Leute geben, die so etwas auch mal machen...

Re: 3D Plot in Python welche Lib ?

Verfasst: Donnerstag 19. Juli 2018, 21:51
von g123
Danke für die schneller Hilfe, ja hab jetzt mal bei stackoverflow gefragt!

Re: 3D Plot in Python welche Lib ?

Verfasst: Freitag 20. Juli 2018, 17:23
von MagBen

Re: 3D Plot in Python welche Lib ?

Verfasst: Freitag 20. Juli 2018, 19:03
von g123
Danke hab ich auch schon gesehen, bin den ganzen Tag dabei Malawi zu verstehen und zu nutzen !

Re: 3D Plot in Python welche Lib ?

Verfasst: Sonntag 22. Juli 2018, 14:51
von g123
@MagBen hast du eigentlich verstanden wie der 3d Numpy array in dem Beispiel aufgebaut ist? Ich verstehe die Test Datei auch nicht wirklich bzw weiß ich nicht, wie ich sie lese..: http://graphics.stanford.edu/data/volda ... ain.tar.gz' .

Hab irgendwie Probleme damit zu verstehen, wie mayavi numpy arrays haben möchte und vor allem visualisiert..

Re: 3D Plot in Python welche Lib ?

Verfasst: Sonntag 22. Juli 2018, 17:03
von ThomasL

Code: Alles auswählen

### Read the data in a numpy 3D array #########################################
import numpy as np
import os

data = np.array([np.fromfile(os.path.join('MRbrain', 'MRbrain.%i' % i),
                                        dtype='>u2') for i in range(1, 110)])
data.shape = (109, 256, 256)
data = data.T
# data.shape -> (256, 256, 109)
In dem .tar file sind 109 Dateien a 128kb. Diese werden nacheinander in ein Numpy Array eingelesen.
Das Array bekommt die Form (109, 256, 256) und wird dann transponiert und hat dann die Form (256, 256, 109).
Die Werte sind 16bit unsigned

Re: 3D Plot in Python welche Lib ?

Verfasst: Sonntag 22. Juli 2018, 17:38
von ThomasL
Habe mal ein wenig rumgespielt
Bild

Re: 3D Plot in Python welche Lib ?

Verfasst: Sonntag 22. Juli 2018, 18:08
von ThomasL
Würde dir nicht ein 3D Scatterplot weiterhelfen?
Für jeden Wert in deiner 3D-Matrix der größer ist als zB 10 einen Punkt setzen?
https://matplotlib.org/gallery/mplot3d/ ... atter3d-py

Re: 3D Plot in Python welche Lib ?

Verfasst: Montag 23. Juli 2018, 12:35
von g123
Hallo Thomas,

vielen Dank! Hab mittlerweile schon ein paar Test Dateien in Mayavi visualisiert.
Den Scatterplot von Matplotlib habe ich mir auch schon angeguckt, aber ich denke mayavi ist hier im Vorteil oder?
1. Lässt sich bei Mayavi die Transparenz der Punkte abhängig zum Skalaren Wert einstellen
2. Könnte ich mit numpy.where() Punkte ausfiltern.

Was mir jedoch noch Probleme bereitet ist, dass die Darstellung nicht smooth aussieht, ich besitze Kugeln an den gegeben Koordinaten, jedoch 'vermischt' das ganze nicht miteinander. Entweder Point3d() ist nicht die richtige Funktion für meinen Fall oder ich brauche einen passenden marching cubes Algorithmus..

Re: 3D Plot in Python welche Lib ?

Verfasst: Montag 23. Juli 2018, 13:27
von ThomasL
1. ich habe mich noch nicht mit Mayavi beschäftigt, kann ich nichts zu sagen
2. wenn du mit "filtern" meinst, Werte in der Matrix die z.B. unterhalb eines bestimmten Schwellwertes liegen, auf 0 zu setzen, Ja.
idx = np.where(bild < 20)
bild[idx] = 0

Re: 3D Plot in Python welche Lib ?

Verfasst: Donnerstag 26. Juli 2018, 16:12
von pixewakb
Kam gerade mittels Python Weekly - ist m. E. etwas anderes, als was du da suchst, passt aber noch zum Thema. Möglicherweise für Dich von Interesse:

"mne-python
MNE-Python software is an open-source Python package for exploring, visualizing, and analyzing human neurophysiological data such as MEG, EEG, sEEG, ECoG, and more. It includes modules for data input/output, preprocessing, visualization, source estimation, time-frequency analysis, connectivity analysis, machine learning, and statistics."

https://github.com/mne-tools/mne-python