用于科学 3D 绘图的 Mayavi 替代品

Alternative to Mayavi for scientific 3d plotting

我需要绘制一个在 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 and here 中的示例)。

Python有没有比较好用的科学3D绘图库?我曾尝试学习 vtk,但网站示例似乎已过时(例如 volume rendering 示例失败 运行,我尝试编辑多行代码以使其在没有运气的情况下工作)并且其他人似乎同意缺少文档。

我所说的体面的科学绘图库是指以下内容:

你应该试试 matplotlib,如果你还没有这样做的话。使用 meshgridcontourcontourf(您可以很容易地在网络上找到脚本)在结构化网格上绘制数据并不难。甚至可以在非结构化网格上绘图(查看:https://grantingram.wordpress.com/plotting-2d-unstructured-data-using-free-software/

它具有您 "decent" 科学绘图库的特点。

编辑: 当您说“3D”绘图时,我假设您想要一个包含 2 个变量的函数图,因此它的图形是 3D 的。

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