【问题标题】:Alternative to Mayavi for scientific 3d plotting用于科学 3D 绘图的 Mayavi 替代方案
【发布时间】:2016-06-13 02:30:41
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python numpy data-science vtk mayavi


    【解决方案1】:

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

    它有你“体面”的科学绘图库的特点。

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

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

    【讨论】:

    • 感谢您的回答。我同意你的观点,matplotlib 是一个优秀的库,它在其他地方得到了极大的支持。但是,我正在寻找一个支持“3D 绘图”的库,例如我的问题中的那个。为了更清楚,我更新了我的问题。
    • 感谢您将我推荐给 Paraview。我认为不像 MayaVi 那样容易使用。肯定有学习曲线,但是可以嵌入到 Python 项目中,对于使用这种环境的研究人员来说非常方便。
    猜你喜欢
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 2011-11-07
    相关资源
    最近更新 更多