9

我需要绘制一个在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 绘图提供了相当标准的例程。然而,当涉及到在出版物中传达这些图时,非常基本的图自定义不可用,例如轴上的主要和次要刻度。此外,那些受支持的非常基本的功能迄今为止甚至无法正常工作(例如,请参阅字体大小错误此处的示例)。

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

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

  • 允许自定义轴、标签、标题等中的字体。
  • 可以编辑轴刻度间距(至少带有主要刻度)。
  • 可以添加颜色条
  • 有文档。
4

1 回答 1

1

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

它具有“体面”的科学绘图库的特征。

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

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

于 2016-02-29T21:44:47.770 回答