3 回答

TA贡献1817条经验 获得超6个赞
解决问题的另一种解决方法gridspec,您还必须在其中手动设置中间图的右侧极限。但是您会像原始代码中那样,坚持使用3行1列的格式。只需用以下几行替换函数定义之前的代码:
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(3, 1)
ax_1_l = plt.subplot(gs[0])
ax_3_l = plt.subplot(gs[2])
ax_1_r = ax_1_l.twinx()
ax_3_r = ax_3_l.twinx()
gs = gridspec.GridSpec(3, 1)
gs.update(right=0.85) # This is the part where you specify the bound
ax_2_l = plt.subplot(gs[1])
ax_2_r = ax_2_l.twinx()
输出

TA贡献1876条经验 获得超6个赞
一个可能的答案是使用 matplotlibssubplot2grid功能。缺点是它不会自动调整尺寸,你必须手动调整。
将子图的创建替换为:
ax_1_l = plt.subplot2grid((3, 11), (0, 0), colspan=11)
ax_2_l = plt.subplot2grid((3, 11), (1, 0), colspan=10)
ax_3_l = plt.subplot2grid((3, 11), (2, 0), colspan=11)
ax_1_r = ax_1_l.twinx()
ax_2_r = ax_2_l.twinx()
ax_3_r = ax_3_l.twinx()
我制作了一个 3 行 11 列的网格,然后设置colspan子图 2 使子图 2 比其他 2 略小,以便为刺留出空间。(还是反复试验的方法,所以不是完美的解决方案)
添加回答
举报