0

我能够用 2D 等高线图绘制 3D 曲面图就好了在此处输入图像描述

但我也想使用 ax.twinx() 共享 2D 绘图的 x 轴,就像我在这里的单独绘图中所做的那样:

在此处输入图像描述

但是,当我将它添加到包括 3D 等高线图的 ax 时(例如“ax2 = ax.twinx()”),我收到一个错误:AttributeError: 'YAxis' object has no attribute 'tick_left'。您对此有任何解决方法的想法吗?谢谢你。这是我的代码的相关部分。

fig = plt.figure(figsize = (10,10))
ax = fig.add_subplot(projection='3d')
X,Y = np.meshgrid(time_Raw1[t1:t],list(reversed(range(100))))
ax.plot_surface(X,Y, csd_matrix,cmap =cm.seismic, alpha = 0.5)
ax.contourf(X, Y, csd_matrix,  offset=np.min(csd_matrix), levels=levels, cmap=cmap)
ax2 = ax.twinx()
ax2.plot(time_Raw1[t1:t],channel_data, color='k', clip_on=False)         
plt.show() 
4

1 回答 1

0

我已经想通了,以下是相关的代码:

fig = plt.figure(figsize = (10,10))
ax = fig.add_subplot(projection='3d')
X,Y = np.meshgrid(time_Raw1[t1:t],list(reversed(range(100))))
ax.plot_surface(X,Y, csd_matrix,cmap =cm.seismic, alpha = 0.5)
ax.contourf(X, Y, csd_matrix,  offset=np.min(csd_matrix), levels=levels, cmap=cmap)
ax2 = fig.add_subplot(projection='3d',sharex=ax)
Z = np.full((102),np.min(csd_matrix))
ax2.plot3D(time_Raw1[t1:t],channel_data,Z, color='k', clip_on=False)         
plt.show() 
于 2022-02-28T17:49:55.853 回答