matplotlib 如何在3D图上共享2D轴

b1zrtrql  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(101)

我能够绘制一个三维表面图与二维等高线图刚刚好

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

然而,当我将此添加到包含3D等高线图的ax(例如“ax2 = ax.twinx()”)时,我得到一个错误:AttributeError:'YAxis'对象没有属性'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()
piok6c0g

piok6c0g1#

我已经弄明白了,下面是相关的代码:

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

相关问题