在没有令人满意的第一个答案和无法解释的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')
我想在Python中这样做,因为我用这种语言模拟了许多数据集,我希望能够在我的模拟参数中执行灵敏度时快速可视化它们.
Mayavi似乎为科学3D绘图提供了非常标准的例程.但是,当在出版物中传达这些图时,非常基本的绘图自定义不可用,例如轴中的主要和次要刻度.此外,支持的那些非常基本的功能到目前为止甚至无法正常工作(例如,请参见字体大小bug和here中的示例).
Python中是否有任何体面且易于使用的科学3D绘图库?我曾尝试学习vtk,但网站示例似乎已过时(例如volume rendering示例无法运行,我尝试编辑多行代码以使其无法运行)而其他人似乎同意文档缺乏.
通过体面的科学绘图库,我的意思是:
>允许自定义轴,标签,标题等字体.
>可以编辑轴刻度线间距(至少有主刻度线).
>可以添加彩条
>有文件.
提前致谢!
最佳答案 你应该尝试matplotlib,如果你还没有这样做的话.使用meshgrid和contour或contourf(你可以在网上轻松找到脚本)来绘制结构化网格上的数据并不困难.甚至可以在非结构化网格上绘图(检查出来:
https://grantingram.wordpress.com/plotting-2d-unstructured-data-using-free-software/)
它具有“体面”科学绘图库的特点.
编辑:
当你说’3D’绘图时,我假设你想要一个2变量函数的图,所以它的图是3D.
但是,如果您有依赖于3个空间变量的数据,我假设您希望能够显示切割平面等.然后我建议您将数据输出到文件并使用适当的可视化包,例如ParaView(使用VTK)或TecPlot(非自由).您可以通过脚本自动化可视化管道(我相信ParaView支持Python脚本).