如何从 python 输出数组以供 paraview 显示

how to output an array from python to be shown by paraview

我有一个二维坐标数组,在每个坐标上我都有该点的压力值。我想以一种稍后可以在 techplot 或 paraview 中打开它们的方式导出我的数据和坐标集。

我已经阅读了很多关于 vtk 的内容,但找不到解决我的问题的方法。我知道这应该很容易,但我是新来的,刚开始的时候。

谢谢

请参阅 VTK 文件格式指南:http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf

您需要将文件保存为结构化点,其中 n_x 和 n_y 大小(VTK 术语中的维度)大于 1,n_z 维度为 1 .

您的数据文件应如下所示

# vtk DataFile Version 2.0
This is a sample data set describing a 2D array of floats with dimensions 128 x 256.
ASCII
DATASET STRUCTURED_POINTS
DIMENSIONS 128 256 1
ORIGIN 0.0 0.0 0.0
SPACING 1.0 1.0 1.0
SCALARS pressure float 1
LOOKUP_TABLE default
1.0
1.0
...
<128*256 total entries>

命名保存文件,扩展名为 .vtk,您将能够在 ParaView 中加载它。

一个简单的解决方案是将数据写入 CSV 文件。

CSV 文件包含点的坐标和这些点的变量值。例如,这是我文件的开头:

"X"          , "Y"          , "Z"          , "R"         
-5.00e+00    , -2.00e+00    , 0.00e+00     , 5.39e+00    
-3.89e+00    , -2.00e+00    , 0.00e+00     , 4.37e+00    
-2.78e+00    , -2.00e+00    , 0.00e+00     , 3.42e+00    
-1.67e+00    , -2.00e+00    , 0.00e+00     , 2.60e+00      

在 ParaView 中可视化您的数据:

  1. 在 ParaView 中打开文件。

    导入选项将显示在 "Property" 面板中(见下文)。检查字段分隔符是否正确,然后按 "Apply"。

  2. 使用Table到点过滤器

    Select 管道浏览器中的 CSV reader(与您的文件同名的元素)。转到“过滤器”菜单,在主菜单中,向下找到 "Alphabetical",然后查找 "Table To Points".

    此过滤器的 属性 面板显示如下。在此面板中,您必须指明哪一列定义了点的 X、Y 和 Z 坐标。由于您有 2D 数据,您可以选中“2D 点”选项以忽略 Z 列。然后检查 "Apply".

    如果视图 window 中没有任何内容,请单击管道浏览器中 TableToPoints 元素旁边的眼睛符号。

  3. 创建多边形数据集

    通过这些操作,您可以将数据可视化为按数量着色的点。例如:

    为了获得更好的可视化效果,我建议使用 Delaunay 2D 过滤器创建多边形数据集。 Select 管道浏览器中的 TableToPoints 元素,然后转到过滤器菜单并在过滤器列表中查找 "Delaunay 2D"。使用此过滤器,您将获得平滑的插值可视化效果。这是我的示例文件的结果:

您将在 the ParaView wiki

中找到有关 CSV 文件的更多信息

我想扩展 Cory Quammen 的回答。 当尝试应用他的方法时,我在导入 .vtk 文件时出现以下错误 o Paraview(版本 5.8.1):

vtkstructuredpointsreader (0x5513c30): unrecognized keyword: scalars

我不确定是什么原因造成的,但我通过显式定义 CELL_DATAPOINT_DATA 解决了问题;在我的例子中,生成的 .vtk 看起来像这样:

# vtk DataFile Version 3.0
Vtk output for binned flow configurations (metric in Ångström)
ASCII
DATASET STRUCTURED_POINTS
DIMENSIONS 65 1 30
ORIGIN 870.6375 0.0 0.0
SPACING 1.996875 25.0 1.9977631578947368
CELL_DATA 1856
POINT_DATA 1950
SCALARS density float 1
LOOKUP_TABLE default
25.206808815618885
36.654412373503654
36.242826782279884
36.50975262319155
35.96262518604988
34.16361654279422
31.625047088384182
30.86263741338999
30.848340565843436
...

我希望这可以帮助遇到同样问题的人。