我有一个pvtu文件和相关的vtu文件,我想从中显示一些数据。如果我在Paraview(5.6+)中加载pvtu,当我选择纯色(白色)和带边缘的表面时,我得到以下的图像。 在接近顶部边界的地方,网格明显是各向异性的,几乎是扁平的三角形;这是预期的行为。
如果我现在在Python中加载同样的pvtu并以如下方式显示网格。
import numpy
import matplotlib.pyplot as plt
import vtk
gridreader = vtk.vtkXMLPUnstructuredGridReader()
gridreader.SetFileName('whatever.pvtu')
gridreader.Update()
vtkOut = gridreader.GetOutput()
vtkData = vtkOut.GetPoints().GetData()
coords = numpy.array([vtkData.GetTuple3(x)
for x in range(vtkData.GetNumberOfTuples())])
plt.triplot(coords[:, 0], coords[:, 1])
plt.gcf().set_size_inches(16, 8)
plt.gca().set_aspect('equal')
plt.savefig('meshPython1.png', bbox_inches='tight')
plt.gca().set_xlim((5e5, 3e6))
plt.gca().set_ylim((6e5, 1e6))
plt.savefig('meshPython2.png', bbox_inches='tight')
在那里你可以很容易地看到各向异性不存在。因此,我的天真问题是:我如何用Python再现Paraview中显示的网格?然而,可能有一个更准确的问题。我完全知道matplotlib的三角计算库接受三角形作为参数,但我找不到从pvtu中提取三角形的命令。因此,也许一个更好的问题是如何从pvtu文件中获得三角形?
希望得到任何帮助。