所以我想出了一个很好的折衷。我开始与git的代码如下所述:
http://www.shocksolution.com/microfluidics-and-biotechnology/visualization/python-vtk-paraview/
这只是一个Python文件。要点是代码允许您为点提供x,y,z位置和半径,并输出VTK格式的XML文件。所以要做粒子,我只把它交给x,y,z位置,然后对所有粒子的半径进行一个常量。然后我只在数据集上制作一个球形字形。
对于我使用完全相同的代码的框。对于每个盒子,我仍输出x,y,z坐标,其中x,y,z值是盒子中心的坐标。然后,对于“半径”参数,我使用立方体的边长。这是有效的,因为在paraview中我再次为这些盒子标出数据点。我使用框标志符号,并通过标量以标量为半径的比例进行缩放。如果您不定位方框字形并将标量因子设置为1,则会得到期望的结果。这里有一个简单的例子,一切统一:
所以我只输出在我的C数据结构到CSV文件,然后在文件蟒蛇拉,并使用代码的链接,打开与结果的坐标paraview包。以下是我如何使用链接上的代码:
from vtktools import VTK_XML_Serial_Unstructured
import sys
if len(sys.argv) > 2:
treeFile = sys.argv[1]
bodyFile = sys.argv[2]
else:
print 'No input files'
exit(4)
x = []
y = []
z = []
r = []
f = open(treeFile, 'r')
for line in f:
v = line.split(',')
x.append(float(v[0].strip()))
y.append(float(v[1].strip()))
z.append(float(v[2].strip()))
r.append(float(v[3].strip()))
f.close()
temp = treeFile.split('/')
if (len(temp) == 1):
temp = temp[0]
else:
temp = temp[-1]
tree_writer = VTK_XML_Serial_Unstructured()
tree_writer.snapshot(temp.split('.',1)[0] + '.vtu', x, y, z, [], [], [], [], [], [], r)
tree_writer.writePVD("octree.pvd")
x = []
y = []
z = []
r = []
f = open(bodyFile, 'r')
for line in f:
v = line.split(',')
x.append(float(v[0].strip()))
y.append(float(v[1].strip()))
z.append(float(v[2].strip()))
r.append(float(v[3].strip()))
f.close()
temp = bodyFile.split('/')
if (len(temp) == 1):
temp = temp[0]
else:
temp = temp[-1]
body_writer = VTK_XML_Serial_Unstructured()
body_writer.snapshot(temp.split('.',1)[0] + '.vtu', x, y, z, [], [], [], [], [], [], r)
body_writer.writePVD("distribution.pvd")
我认为paraview将是我的选择。你有没有尝试使用VTK文件?他们真的不那么复杂。你可以编写二进制文件,这对大型数据集很有用。 – angainor
想要显示的框,是指将坐标系设置为该“框”,或绘制一个框并在3D中绘制一个点? – macduff
没有尝试vtk文件。可以查看导入vtk文件? – user926914