UNSTRUCTURED POINTS データセットを含む vtk ファイルがあります。内部にはいくつかのデータセット (フィールド、電流、密度) があります。
このファイルを python にロードし、すべてのデータセットを numpy 配列に変換して、matplotlib でプロットしたいと思います。これを行う方法?
ファイルの例がないと、正確な答えを出すのは困難です。しかし、vtk ファイルについて私が知っていることから、4 行のヘッダーの後に ASCII データまたはバイナリ データを含めることができます。
vtk のデータが ASCII の場合、
np.loadtxt(filename, skiplines=4)
動作するはずです。繰り返しますが、多数の異なるフィールドがある場合、ファイルの構造によってこれが難しくなる可能性があります。
データがバイナリの場合、次のようなものを使用する必要があります
filename.read()
struct.unpack()
また
np.fromfile()
解決策は、VTK パッケージのvtk_to_numpy関数によって提供されます。グリッド形式 (構造化または非構造化) に応じて、Vtk グリッド リーダーと共に使用されます。
サンプル コードは次のようになります。
from vtk import *
from vtk.util.numpy_support import vtk_to_numpy
# load a vtk file as input
reader = vtk.vtkXMLUnstructuredGridReader()
reader.SetFileName("my_input_data.vtk")
reader.Update()
#The "Temperature" field is the third scalar in my vtk file
temperature_vtk_array = reader.GetOutput().GetPointData().GetArray(3)
#Get the coordinates of the nodes and their temperatures
nodes_nummpy_array = vtk_to_numpy(nodes_vtk_array)
temperature_numpy_array = vtk_to_numpy(temperature_vtk_array)
x,y,z= nodes_nummpy_array[:,0] ,
nodes_nummpy_array[:,1] ,
nodes_nummpy_array[:,2]
(...continue with matplotlib)
matplotib プロットを含むより長いバージョンは、このスレッドにあります: VTK to Maplotlib using Numpy