用matplotlib创建三维立体图

2024-04-25 09:18:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够在matplotlib中绘制可以在立体3d中显示的3d图,如下所示:

enter image description here

左侧图像的摄影机相对于右侧稍微平移。如果你练习一点,你可以欺骗你的大脑让你的左眼看左边的图像,你的右眼看右边的图像,在任何屏幕上看到3D!在

不管怎样,我希望能够使任何matplotlib三维绘图显示两次,一个相机稍微翻译。我只需翻译数据就可以得到立体图:

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()

enter image description here

这会产生所需的效果,但我希望能够在立体3d中显示轴本身,我只能找到如何使用axes对象的view_init方法来设置相机的仰角和方位角。似乎没有一种“好”的方法来翻译摄像机。在

有人知道怎么做吗?在


Tags: from图像importaddmatplotlibasnpfig