【发布时间】: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