matplotlib 不同宽度的子图共享相同的x轴

7lrncoxx  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(149)

我想要3行子图,每行子图的宽度不同,但它们都共享相同的X轴,例如下面的粗略模型。如何做到这一点?即使在GridSpec调整的图中,我也可以使用sharex=True吗?


的数据

xcitsw88

xcitsw881#

您可以手动放置轴,或者另一种方法是使用inset_axes:

import matplotlib.pyplot as plt
import numpy as np

fig, axs = plt.subplots(3, 1, constrained_layout=True, sharex=True, sharey=True)

ylim=[-3, 3]
axs[2].plot(np.random.randn(500))
axs[2].set_ylim(ylim)
xlim = axs[2].get_xlim()

ax0 = axs[0].inset_axes([300, ylim[0], xlim[1]-300, ylim[1]-ylim[0]], transform=axs[0].transData)
ax0.set_ylim(ylim)
ax0.set_xlim([300, xlim[1]])
axs[0].axis('off')

ax0.plot(np.arange(300, 500), np.random.randn(200))

ax1 = axs[1].inset_axes([150, ylim[0], xlim[1] - 150, ylim[1]-ylim[0]], transform=axs[1].transData)
ax1.set_ylim(ylim)
ax1.set_xlim([150, xlim[1]])
axs[1].axis('off')
ax1.plot(np.arange(150, 500), np.random.randn(350))
plt.show()

字符串


的数据

irtuqstp

irtuqstp2#

您可以在创建子图时传递哪些轴用作共享轴的参考

fig = plt.figure()
gs = matplotlib.gridspec.GridSpec(3,3, figure=fig)
ax1 = fig.add_subplot(gs[0,2])
ax2 = fig.add_subplot(gs[1,1:], sharex=ax1)
ax3 = fig.add_subplot(gs[2,:], sharex=ax1)
ax1.plot([1,5,0])

字符串


的数据

相关问题