在3D中绘制图像会导致交互速度非常慢

时间:2017-07-14 08:48:19

标签: python matplotlib

我正在使用建议的here解决方案,使用matplotlib在3D中绘制图像。但是,即使对于非常合理的图像大小(128x128),刷新率也非常慢。在我的电脑上,以下内容不能高于2帧/秒。

import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
import numpy as np
X, Y = np.meshgrid(np.arange(128), np.arange(128))
Z = np.zeros_like(X)
im = np.sin(X/10 + Y/100)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=plt.cm.BrBG(im), shade=False)
plt.show()

有没有办法加速上述情节?我理解mplot3d does not support hardware acceleration,但我觉得上面的简单情节应该更快,即使在CPU上也是如此。

1 个答案:

答案 0 :(得分:2)

您可以尝试mayaVi库以获得更好的交互式数据可视化。

#import matplotlib.pyplot as plt
#from mpl_toolkits import mplot3d
import numpy as np
from mayavi import mlab

X, Y = np.meshgrid(np.arange(128), np.arange(128))
Z = np.zeros_like(X)
im = np.sin(X/10 + Y/100)

#fig = plt.figure()
#x = fig.add_subplot(111, projection='3d')

src = mlab.pipeline.array2d_source(im)
warp = mlab.pipeline.warp_scalar(src)
normals = mlab.pipeline.poly_data_normals(warp)
surf = mlab.pipeline.surface(normals)
mlab.show()


#ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=plt.cm.BrBG(im), shade=False)

#plt.show()

MayaVi Documentation