我想用mayavi在Jupyter笔记本中显示几个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 \ 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中使用更复杂方法的解决方案(如手动构建管道)也受到欢迎。谢谢!
答案 0 :(得分:0)
您可以在创建新图形之前使用功能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()