我将制作动画。在每一帧中,我都希望包含一个用

mlab.pipeline.iso_surface(source, some other superfluous args)

以及一个matplotlib图
pylab.plot(args)

我有两个单独的脚本,但不知道如何将它们组合成一个图形。我希望最终产品是一个脚本,其中包含我目前拥有的两个脚本的代码。

最佳答案

阿飞,没有直接的方法,因为使用的后端是如此不同。似乎不可能将matplotlib轴添加到mayavi.figure或反之亦然。
但是,使用mlab.screenshot有一种“方法”。

import mayavi.mlab as mlab
import matplotlib.pyplot as plt

# create and capture a mlab object
mlab.test_plot3d()
img = mlab.screenshot()
mlab.close()

# create a pyplot
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax1.plot([0,1], [1,0], 'r')

# add the screen capture
ax2 = fig.add_subplot(122)
ax2.imshow(img)
ax2.set_axis_off()

这不一定是做事情的最好方法,而且您可能会遇到解决问题(检查mayavi窗口的大小)。然而,在大多数情况下,它能完成任务。

关于python - 在同一图中组合mayavi和matplotlib,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24768179/

10-09 14:03