[PYTHON] Lisez le fichier VTK et affichez la carte des couleurs avec jupyter.

introduction

Qu'est-ce que tu veux faire

Je veux afficher le fichier VTK du résultat de la simulation de température bidimensionnelle avec jupyter.

Comment?

Lisez le fichier VTK avec Python, extrayez les données de coordonnées et les données de température et affichez-les avec Matplotlib.

environnement

OS: Windows 10 home edition

Tool: Anaconda(Python 3.7.4)

Fichier VTK des résultats de simulation

En utilisant le logiciel libre de la méthode des éléments finis Freefem ++, nous avons résolu l'équation de diffusion thermique et créé le fichier VTK résultant. Le code de l'équation de diffusion de chaleur a utilisé Heat.edp de l'exemple. J'omettrai comment installer et exécuter Freefem ++. Le fichier VTK utilisé est stocké dans ici.

Installation de la bibliothèque Python VTK

Installez en utilisant conda.

conda install vtk

relation d'importation

Importez les bibliothèques Numpy, Matplotlib et VTK nécessaires au fonctionnement.

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

Lire le fichier VTK

Le fichier VTK étant une grille non structurée, lisez-le avec Unstructured.

#Lecture de fichier
filename = "heat_result.vtk"
reader = vtk.vtkUnstructuredGridReader()
reader.SetFileName(filename)
reader.Update()

Conversion des données de cellule de température en données de point

Les données de coordonnées de ce fichier VTK sont des données de point et les données de température sont des données de cellule. Je veux avoir une relation univoque entre les données de coordonnées et les données de température, donc je les convertis toutes en données de point.

#Conversion de données de cellule en données de point
cell2point = vtk.vtkCellDataToPointData()
cell2point.SetInputData(reader.GetOutput())
cell2point.Update()

Extraction des données de coordonnées et de température à partir des données converties

Lisez le fichier VTK et utilisez vtk_support pour extraire les données de coordonnées et les données de température des données VTK.

#Conversion numpy des coordonnées et des données de température
coord = numpy_support.vtk_to_numpy(cell2point.GetOutput().GetPoints().GetData())
x = coord[:,0]
y = coord[:,1]
z = coord[:,2]#ne pas utiliser. Tous sont 0 parce que c'est le résultat d'une équation de diffusion thermique bidimensionnelle.
#GetAbstractArray(0)Étiquette, GetAbstractArray(1)Contient des données de température.
temperature = numpy_support.vtk_to_numpy(cell2point.GetOutput().GetPointData().GetAbstractArray(1))

Affichage de la carte couleur dans Matplotlib

Maintenant qu'il est prêt, tout ce que vous avez à faire est de le visualiser dans Matplotlib. Puisqu'il s'agit de données non structurées, la carte des couleurs est affichée à l'aide de trikontourf.

##Sortie de la carte couleur
plt.tricontourf(x,y,temperature,levels=15,cmap="jet")
plt.colorbar()

coloarmap.png

Tous les 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
#Lecture de fichier
filename = "heat_result.vtk"
reader = vtk.vtkUnstructuredGridReader()
reader.SetFileName(filename)
reader.Update()

#Conversion de données de cellule en données de point
cell2point = vtk.vtkCellDataToPointData()
cell2point.SetInputData(reader.GetOutput())
cell2point.Update()

#Conversion numpy des coordonnées et des données de température
coord = numpy_support.vtk_to_numpy(cell2point.GetOutput().GetPoints().GetData())
x = coord[:,0]
y = coord[:,1]
z = coord[:,2]#ne pas utiliser. Tous sont 0 parce que c'est le résultat d'une équation de diffusion thermique bidimensionnelle.
#GetAbstractArray(0)Étiquette, GetAbstractArray(1)Contient des données de température.
temperature = numpy_support.vtk_to_numpy(cell2point.GetOutput().GetPointData().GetAbstractArray(1))

#Sortie de la carte couleur
plt.tricontourf(x,y,temperature,levels=15,cmap="jet")
plt.colorbar()

référence

Pour la classe VTK, la [référence de classe] de c ++ (https://vtk.org/doc/nightly/html/index.html) est ouverte au public. La structure et le nom de Python VTK sont les mêmes que ceux de la référence c ++, vous pouvez donc y faire référence. Les sites suivants ont été principalement mentionnés.

Recommended Posts

Lisez le fichier VTK et affichez la carte des couleurs avec jupyter.
[Python] Lisez le fichier csv et affichez la figure avec matplotlib
Lisez le fichier csv avec le notebook jupyter et écrivez le graphique l'un sur l'autre
Ouvrez un fichier Excel en Python et coloriez la carte du Japon
Lisez le fichier avec python et supprimez les sauts de ligne [Notes sur la lecture du fichier]
Afficher de manière interactive des courbes algébriques en Python, Jupyter
Lire le fichier json avec Python, le formater et générer le json
Lire et écrire un fichier csv
Lisez la liste des URL avec Robot Framework et entourez les captures d'écran
Séparez les images couleur en images RVB et affichez-les avec OpenCV
Lire le fichier GRIB2 de l'Agence météorologique sur pygrib
Lire et écrire des fichiers
Galerie matplotlib et carte des couleurs
Comment faire une commande pour lire le fichier de paramètres avec pyramide
Lisez le fichier en Python avec un chemin relatif depuis le programme
Essayez d'afficher la carte google et la carte géographique avec python
Colorez l'intervalle d'intégration avec matplotlib.pyplot
Suivez la hiérarchie des fichiers avec fts
Exécutez Pylint et lisez les résultats
[Python] Ajuster la norme de la carte des couleurs
Affichez simplement le fichier du notebook Jupyter
Téléchargez le fichier déployé avec appcfg.py
Affichons la carte en utilisant Basemap
Ouvrir le fichier avec l'application par défaut
Remplacez le nom du répertoire et le nom du fichier dans le répertoire par une commande Linux.
Lire et formater des fichiers csv mélangés avec des tabulations de virgule avec des pandas Python
J'ai lu le dictionnaire de synonymes Sudachi avec Pandas et essayé de rechercher des synonymes
Spécifiez le navigateur à utiliser avec Jupyter Notebook. Surtout Mac. (Et Vivaldi)
Imaginez le fichier pdf et tamponnez toutes les pages avec des tampons (images) confidentiels.
Lisez l'image du graphique avec OpenCV et obtenez les coordonnées du point final du graphique
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
Python / numpy> Lire le fichier de données avec la ligne de nom d'élément> Utiliser genfromtxt ()
[Python] Carte thermique de style calendrier (avec affichage des jours fériés)
Calculer et afficher le poids standard avec python
Spécifiez la couleur dans la carte 2D matplotlib
Lire le fichier CSV avec python (Télécharger et analyser le fichier CSV)
Affichage de l'image prise avec l'ISIGHT intégré
Vérifier l'existence du fichier avec python
Utiliser Jupyter Lab et Jupyter Notebook avec EC2
Jupyter avec PYNQ et synthèse de haut niveau avec Polyphony
Lire et écrire des fichiers csv avec numpy
Lisez le fichier ligne par ligne avec Python
Afficher le graphique de tensorBoard sur Jupyter
Lisez le fichier ligne par ligne avec Python
Définissez la couleur des xticklabels individuellement avec matplotlib
Lisez le fichier en spécifiant le code de caractère.
Lier Python et JavaScript avec le notebook Jupyter
Afficher les marqueurs au-dessus de la bordure avec matplotlib
Essayez de réécrire le fichier avec la commande less
Vérifiez la taille du fichier avec du -sh *
Lire le fichier de données de caractères avec numpy
[Mémo Jupyter Notebook] Afficher les kanji avec matplotlib
[pandas] Méthode de lecture et d'affichage des fichiers .csv
[python] Lisez le fichier html et entraînez-vous au scraping
Téléchargez le fichier avec PHP [En construction]
Création de carte Ramen avec Scrapy et Django
[Python] Lire la ligne spécifiée dans le fichier
Lisez CSV et analysez avec Pandas et Seaborn
Présentation de la bibliothèque d'extensions de palette de couleurs palatable
[Automation] Lire le courrier (fichier msg) avec Python