如何创建立体 3D 曲面图

jko*_*ian 5 python matplotlib stereoscopy matplotlib-3d

我希望能够在 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()
    
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这给出了所需的效果,但我希望能够以立体 3d 形式显示轴本身。view_init我只能找到如何使用Axes 对象的方法来设置相机的仰角和方位角。似乎没有一种“好的”方式来平移相机。

有谁知道该怎么做?