我正在使用此处提出的解决方案来使用matplotlib
. 然而,即使对于非常合理的图像尺寸 ( 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()
Run Code Online (Sandbox Code Playgroud)
有什么办法可以加速上面的情节吗?我知道mplot3d 不支持硬件加速,但我觉得上面的简单绘图即使在 CPU 上也应该更快。
您可以尝试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()
Run Code Online (Sandbox Code Playgroud)