我希望能够在matplotlib中制作可以在立体3d中显示的3d图,如下所示:
左图像的相机相对于右侧略微平移。如果你练习一下,你可以欺骗你的大脑让你的左眼看左图像,右眼看右图像,并在任何屏幕上看3D!
无论如何,我希望能够让任何matplotlib 3d图表显示两次,其中一个相机略有翻译。我只是通过翻译数据设法得到立体图:
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(10,5))
axl = fig.add_subplot(1,2,1,projection='3d')
axr = fig.add_subplot(1,2,2,projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
axr.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False)
axl.plot_surface(X, Y-5, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False)
for ax in [axr,axl]:
ax.set_zlim(-1.01, 1.01)
ax.set_ylim(-10,10)
ax.view_init(azim=10)
ax.set_axis_off()
这给出了期望的效果,但我希望能够在立体3d中显示轴本身。我只能使用Axes对象的view_init
方法找到如何设置摄像机的高程和方位角。似乎没有一种“漂亮”的方式来翻译相机。
有谁知道怎么做?