3D-Konturdiagramm aus Daten mit Mayavi / Python

8

Ich würde gerne ein 3D-Konturdiagramm mit Mayavi machen, genau wie die dritte Abbildung auf dieser Seite (ein Wasserstoffelektronenwolkenmodell):

Ссылка

Ich habe eine Reihe von Datenpunkten, die ich mit meinem eigenen Modell erstellt habe, das ich gerne verwenden würde. Die Datenpunkte werden wie folgt in einem mehrdimensionalen Nummernfeld gespeichert:

%Vor%

Die Datenpunkte sind im XYZ-Raum nicht gleichmäßig verteilt und werden nicht in einer bestimmten Reihenfolge gespeichert. Ich denke, dass das Beispiel ein Meshgrid verwendet, um die Datenpunkte zu generieren - ich habe es nachgeschlagen, verstehe es aber überhaupt nicht. Jede Hilfe würde sehr geschätzt werden?

H http://www.sethanil.com/ _ / rsrc / 1267943775903 / Python-für-Forschung / 5 / Article5-fig3.png

    
joshlk 23.02.2012, 19:02
quelle

2 Antworten

9

Der Trick besteht darin, vor dem Plotten über ein Gitter zu interpolieren - ich würde dafür scipy verwenden. Unter R ist ein (500,3) Array von XYZ-Werten und V ist die "Größe" an jedem XYZ-Punkt.

%Vor%

Von hier aus ist es ein Kinderspiel, unsere Daten anzuzeigen:

%Vor%

Das ergibt einen schönen (klumpigen) Gaussian.

Sehen Sie sich die Dokumentation für Rasterdaten an Sie können die Interpolationsmethode ändern. Wenn Sie mehr Punkte haben (sowohl im interpolierten Raster als auch im Datensatz), wird die Interpolation besser und besser für die zugrunde liegende Funktion, die Sie veranschaulichen möchten. Hier ist das obige Beispiel bei 10K Punkten und einem feineren Raster:

    
Hooked 24.02.2012, 01:18
quelle
4

Sie können den delaunay3d-Filter verwenden, um Zellen aus Punkten zu erstellen. Dann können Sie für die Ausgabe UnstructuredGrid von delaunay3d eine iso_surface () erstellen. Wenn Sie ImageData verwenden möchten, können Sie den Filter image_data_probe verwenden.

%Vor%

    
HYRY 24.02.2012 02:42
quelle

Tags und Links