Mayavi替代科学3d绘图

时间:2016-02-29 21:24:29

标签: python numpy vtk mayavi

在没有令人满意的第一个答案和无法解释的downvote之后

编辑

我需要绘制一个以 3D网格结构化的标量字段,如下所示:

import numpy as np
from mayavi import mlab

dt = 10
X,Y,Z = np.mgrid[0:dt,0:dt,0:dt]

F = X**2+Y**2+Z**2

test = mlab.figure(size = (1024,768), bgcolor = (1,1,1), fgcolor = (0, 0, 0))
sf = mlab.pipeline.scalar_field(X,Y,Z,F)
vl = mlab.pipeline.volume(sf)
mlab.outline()
mlab.axes()
mlab.title('Can not change font size for this title')
mlab.xlabel('Only end ticks')
mlab.ylabel('No major ticks')

enter image description here

我想在Python中这样做,因为我用这种语言模拟了许多数据集,我希望能够在我的模拟参数中执行敏感时快速可视化它们。

Mayavi似乎为科学3D绘图提供了非常标准的例程。但是,当在出版物中传达这些图时,非常基本的绘图自定义不可用,例如轴中的主要和次要刻度。此外,支持的那些非常基本的功能甚至无法正常使用(例如,请参阅字体大小bughere中的示例)。

在Python中是否有任何体面且易于使用的科学 3D 绘图库?我试过学习vtk,但网站示例似乎已过时(例如volume rendering无法运行的示例,我尝试编辑多行代码以使其无法运行)而其他人似乎同意文档缺乏

通过体面的科学绘图库,我的意思是:

  • 允许自定义轴,标签,标题等字体。
  • 可以编辑轴间距(至少有主刻度线)。
  • 可以添加颜色栏
  • 有文件。

提前致谢!

1 个答案:

答案 0 :(得分:2)

如果你还没有这样做,你应该尝试使用matplotlib。使用>>> df2[~df2.C.isin(df1.C)] C a b 2 f 3 6 meshgridcontour(您可以轻松地在网上找到脚本)来绘制结构化网格上的数据并不困难。甚至可以在非结构化网格上绘图(请查看:https://grantingram.wordpress.com/plotting-2d-unstructured-data-using-free-software/

它有你的特点,体面的"科学绘图库。

编辑: 当你说'3D'绘图,我假设你想要一个2变量函数的图,所以它的图是3D。

但是,如果您有数据取决于3个空间变量,我假设您希望能够显示切割平面等。然后我建议您将数据输出到文件并使用适当的可视化包,例如ParaView(使用VTK)或TecPlot(非自由)。您可以通过脚本自动化可视化管道(我相信ParaView支持Python脚本)。