【问题标题】:Display mayavi X3D figure in different cells in Jupyter notebook在 Jupyter notebook 的不同单元格中显示 mayavi X3D 图
【发布时间】:2017-03-23 19:01:42
【问题描述】:

我想使用 mayavi 在 Jupyter notebook 中显示几个 3D 图形。为了测试它,我尝试了以下示例,其中只有 3 个单元格:

# first cell
from mayavi import mlab
mlab.init_notebook('x3d')

# second cell
mlab.test_plot3d()

# third cell
mlab.test_points3d()

我在玩这个例子的时候发现了几个问题:

a) 当我第一次运行这些单元时,第二个的输出很好,而第三个输出显示了两个 3D 图形的重叠。同样在我多次重复运行第二个和第三个单元格之后,有时,输出会崩溃并显示如下内容:

7 0.945098 0.603922,\ n 0.866667 0.945098 0.603922,\ n 0.866667 0.945098 0.603922,\ n 0.847059 0.937255 0.607843,\ n 0.847059 0.937255 0.607843,\ n 0.847059 0.937255 0.607843,\ n 0.847059 0.937255 0.607843,\ n 0.847059 0.937255 0.607843,\ n 0.847059 0.937255 0.607843,\n 0.819608 0.929412...

以及以下错误消息:

Javascript error adding output!

SyntaxError: Invalid or unexpected token

See your browser Javascript console for more details.

b) 我尝试通过将 mlab.figure() 添加到第二个和第三个单元格的开头来解决重叠问题:

# second cell
mlab.figure()
mlab.test_plot3d()

# third cell
mlab.figure()
mlab.test_points3d()

当我第一次运行这些单元格时,这确实给了我单独的数字。但是,当我想重复单元格时,我遇到了与上图相同的问题。

c) 只是为了比较,我删除了第三个单元格,只保留了第二个单元格。这一次,如果我对第二个单元格使用以下代码

# second cell
mlab.test_plot3d()

它从来没有这个崩溃问题。但是,如果我添加 mlab.figure() 到它,重复运行它会给我同样的问题。

所以我的问题是:有没有办法在 Jupyter 笔记本中获得更强大的 mayavi 输出,即每次我再次运行单元格时重新生成对象并显示它?我对 mayavi 还很陌生,因此非常感谢任何基于 mlab 的解决方案。但是,如果这是不可能的,那么在 mayavi 中使用更复杂方法(如手动构建管道)的解决方案也受到欢迎。谢谢!

【问题讨论】:

    标签: python jupyter-notebook mayavi


    【解决方案1】:

    您可以在创建新图形之前使用函数mayavi.mlab.clf 清除图形。这个函数的文档是there

    我认为在每个新图之前使用此功能是有意义的,即使它是第一个图,例如:

    # first cell
    from mayavi import mlab
    mlab.init_notebook('x3d')
    
    # second cell
    mlab.clf()
    mlab.test_plot3d()
    
    # third cell
    mlab.clf()
    mlab.test_points3d()
    

    【讨论】:

    • 在我的情况下,将渲染选项设置为 mlab.init_notebook('png') 也有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2021-01-19
    • 2020-02-15
    • 2021-08-21
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多