[PYTHON] Lesen Sie die VTK-Datei und zeigen Sie die Farbkarte mit Jupiter an.

Einführung

Was möchten Sie tun

Ich möchte die VTK-Datei des zweidimensionalen Temperatursimulationsergebnisses mit jupyter anzeigen.

Wie?

Lesen Sie die VTK-Datei mit Python, extrahieren Sie die Koordinatendaten und Temperaturdaten und zeigen Sie sie mit Matplotlib an.

Umgebung

OS: Windows 10 home edition

Tool: Anaconda(Python 3.7.4)

VTK-Datei mit Simulationsergebnissen

Mit der kostenlosen Finite-Elemente-Methode Freefem ++ haben wir die Wärmediffusionsgleichung gelöst und die resultierende VTK-Datei erstellt. Der Code der Wärmediffusionsgleichung verwendete Heat.edp des Beispiels. Ich werde weglassen, wie Freefem ++ installiert und ausgeführt wird. Die verwendete VTK-Datei wird in hier gespeichert.

Installieren der Python VTK-Bibliothek

Installieren Sie mit conda.

conda install vtk

Beziehung importieren

Importieren Sie die für den Betrieb erforderlichen Numpy-, Matplotlib- und VTK-Bibliotheken.

import numpy as np
import maptlotlib.pyplot as plt
import vtk
from vtk.util import numpy_support
%matplotlib inline

VTK-Datei lesen

Da die VTK-Datei ein nicht strukturiertes Raster war, lesen Sie sie mit Unstructured.

#Datei lesen
filename = "heat_result.vtk"
reader = vtk.vtkUnstructuredGridReader()
reader.SetFileName(filename)
reader.Update()

Umwandlung von Temperaturzellendaten in Punktdaten

Die Koordinatendaten dieser VTK-Datei sind Punktdaten und die Temperaturdaten sind Zellendaten. Ich möchte eine Eins-zu-Eins-Beziehung zwischen den Koordinatendaten und den Temperaturdaten haben, also konvertiere ich sie alle in Punktdaten.

#Konvertieren von Zellendaten in Punktdaten
cell2point = vtk.vtkCellDataToPointData()
cell2point.SetInputData(reader.GetOutput())
cell2point.Update()

Extraktion von Koordinaten- und Temperaturdaten aus konvertierten Daten

Lesen Sie die VTK-Datei und extrahieren Sie mit vtk_support die Koordinatendaten und Temperaturdaten aus den VTK-Daten.

#Numpy Konvertierung von Koordinaten und Temperaturdaten
coord = numpy_support.vtk_to_numpy(cell2point.GetOutput().GetPoints().GetData())
x = coord[:,0]
y = coord[:,1]
z = coord[:,2]#verwende nicht. Alle sind 0, weil es das Ergebnis einer zweidimensionalen Wärmediffusionsgleichung ist.
#GetAbstractArray(0)Label, GetAbstractArray(1)Enthält Temperaturdaten.
temperature = numpy_support.vtk_to_numpy(cell2point.GetOutput().GetPointData().GetAbstractArray(1))

Farbkartenanzeige in Matplotlib

Jetzt, da es fertig ist, müssen Sie es nur noch in Matplotlib anzeigen. Da es sich um unstrukturierte Daten handelt, wird die Farbkarte mit trikontourf angezeigt.

##Farbkartenausgabe
plt.tricontourf(x,y,temperature,levels=15,cmap="jet")
plt.colorbar()

coloarmap.png

Alle Codes

https://github.com/matsxxx/show_vtk_on_jupyter

import numpy as np
import matplotlib.pyplot as plt
import vtk
from vtk.util import numpy_support
%matplotlib inline
#Datei lesen
filename = "heat_result.vtk"
reader = vtk.vtkUnstructuredGridReader()
reader.SetFileName(filename)
reader.Update()

#Konvertieren von Zellendaten in Punktdaten
cell2point = vtk.vtkCellDataToPointData()
cell2point.SetInputData(reader.GetOutput())
cell2point.Update()

#Numpy Konvertierung von Koordinaten und Temperaturdaten
coord = numpy_support.vtk_to_numpy(cell2point.GetOutput().GetPoints().GetData())
x = coord[:,0]
y = coord[:,1]
z = coord[:,2]#verwende nicht. Alle sind 0, weil es das Ergebnis einer zweidimensionalen Wärmediffusionsgleichung ist.
#GetAbstractArray(0)Label, GetAbstractArray(1)Enthält Temperaturdaten.
temperature = numpy_support.vtk_to_numpy(cell2point.GetOutput().GetPointData().GetAbstractArray(1))

#Farbkartenausgabe
plt.tricontourf(x,y,temperature,levels=15,cmap="jet")
plt.colorbar()

Referenz

Für die VTK-Klasse ist die [Klassenreferenz] von c ++ (https://vtk.org/doc/nightly/html/index.html) für die Öffentlichkeit zugänglich. Die Struktur und der Name von Python VTK entsprechen der c ++ - Referenz, sodass Sie darauf verweisen können. Auf die folgenden Websites wurde hauptsächlich verwiesen.

Recommended Posts

Lesen Sie die VTK-Datei und zeigen Sie die Farbkarte mit Jupiter an.
[Python] Lesen Sie die CSV-Datei und zeigen Sie die Abbildung mit matplotlib an
Lesen Sie die CSV-Datei mit dem Jupiter-Notizbuch und schreiben Sie die Grafik übereinander
Öffnen Sie eine Excel-Datei in Python und färben Sie die Karte von Japan
Lesen Sie die Datei mit Python und löschen Sie die Zeilenumbrüche [Hinweise zum Lesen der Datei]
Interaktive Anzeige algebraischer Kurven in Python, Jupyter
Lesen Sie die json-Datei mit Python, formatieren Sie sie und geben Sie json aus
CSV-Datei lesen und schreiben
Lesen Sie die URL-Liste mit Robot Framework und umgeben Sie die Screenshots
Trennen Sie Farbbilder in RGB-Bilder und zeigen Sie sie mit OpenCV an
Lesen Sie die GRIB2-Datei der Meteorological Agency auf pygrib
Dateien lesen und schreiben
Matplotlib Galerie und Farbkarte
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
Lesen Sie die Datei in Python mit einem relativen Pfad aus dem Programm
Versuchen Sie, Google Map und Geography Map mit Python anzuzeigen
Färben Sie das Integrationsintervall mit matplotlib.pyplot
Folgen Sie der Dateihierarchie mit fts
Führen Sie Pylint aus und lesen Sie die Ergebnisse
[Python] Passen Sie den Standard für die Farbkarte an
Zeigen Sie einfach die Jupyter-Notizbuchdatei an
Laden Sie die mit appcfg.py bereitgestellte Datei herunter
Lassen Sie uns die Karte mit der Grundkarte anzeigen
Datei mit Standard-App öffnen
Ersetzen Sie den Verzeichnisnamen und den Dateinamen im Verzeichnis zusammen mit einem Linux-Befehl.
Lesen und formatieren Sie CSV-Dateien gemischt mit Komma-Registerkarten mit Python-Pandas
Ich habe das Sudachi-Synonymwörterbuch mit Pandas gelesen und versucht, nach Synonymen zu suchen
Geben Sie den Browser an, der mit Jupyter Notebook verwendet werden soll. Besonders Mac. (Und Vivaldi)
Stellen Sie die PDF-Datei ab und stempeln Sie alle Seiten mit vertraulichen Stempeln (Bildern).
Lesen Sie das Diagrammbild mit OpenCV und ermitteln Sie die Koordinaten des Endpunkts des Diagramms
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
Python / numpy> Lesen Sie die Datendatei mit der Elementnamenzeile> Verwenden Sie genfromtxt ()
[Python] Heatmap im Kalenderstil (mit Feiertagsanzeige)
Berechnen Sie das Standardgewicht und zeigen Sie es mit Python an
Geben Sie die Farbe in der matplotlib 2D-Karte an
CSV-Datei mit Python lesen (CSV-Datei herunterladen und analysieren)
Bildanzeige mit dem eingebauten ISIGHT
Überprüfen Sie die Existenz der Datei mit Python
Verwenden Sie Jupyter Lab und Jupyter Notebook mit EC2
Jupyter mit PYNQ und Synthese auf hohem Niveau mit Polyphonie
Lesen und Schreiben von CSV-Dateien mit Numpy
Lesen Sie die Datei Zeile für Zeile mit Python
Zeigen Sie das Diagramm von tensorBoard auf jupyter an
Lesen Sie die Datei Zeile für Zeile mit Python
Stellen Sie die Farbe der xticklabels individuell mit matplotlib ein
Lesen Sie die Datei, indem Sie den Zeichencode angeben.
Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
Zeigen Sie Markierungen über dem Rand mit matplotlib an
Versuchen Sie, die Datei mit dem Befehl less neu zu schreiben
Überprüfen Sie die Dateigröße mit du -sh *
Zeichendatendatei mit numpy lesen
[Jupyter Notebook Memo] Kanji mit Matplotlib anzeigen
[pandas] CSV-Datei Lese- und Anzeigemethode
[Python] Lesen Sie die HTML-Datei und üben Sie das Scraping
Laden Sie die Datei mit PHP herunter [Im Aufbau]
Ramen-Kartenerstellung mit Scrapy und Django
[Python] Lesen Sie die angegebene Zeile in der Datei
Lesen Sie CSV und analysieren Sie mit Pandas und Seaborn
Einführung in die Palormap-Erweiterungsbibliothek palettierbar
[Automatisierung] Lesen Sie E-Mails (Nachrichtendatei) mit Python