如何调整1行2列Matplotlib子图高度,使右侧子图居右下且更小?
实现指定尺寸与位置的Matplotlib子图
报错原因说明
你创建的是1行2列的子图网格,height_ratios的元素数量必须和网格行数一致(即1个),传入[2,1]会因数量不匹配触发ValueError;而只传[3]时,网格仅1行,高度比例无差异化,所以两个子图尺寸一致。
解决方案:使用GridSpec自定义网格
要实现右侧子图尺寸为左侧的1/2且位于右下角,需要用GridSpec拆分出更灵活的网格布局,具体代码如下:
import matplotlib.pyplot as plt # 创建2行2列的网格,设置宽度比例为2:1(左侧宽度是右侧2倍) gs = plt.GridSpec(2, 2, width_ratios=[2, 1], height_ratios=[1, 1]) fig = plt.figure(figsize=(12, 10)) # 左侧主图:占据第1、2行的第1列,高度为整个图的高度 ax_main = fig.add_subplot(gs[:, 0]) ax_main.set_title('左侧主图') # 右下角子图:仅占据第2行的第2列,高度为左侧的1/2,宽度为左侧的1/2 ax_sub = fig.add_subplot(gs[1, 1]) ax_sub.set_title('右下角子图') # 自动调整子图间距 plt.tight_layout() plt.show()
效果说明
width_ratios=[2,1]确保右侧子图宽度是左侧的1/2- 右侧子图绑定到
gs[1,1](第2行第2列),自然处于右下角位置,且高度为左侧主图的1/2(因为网格两行高度比例均为1)
内容的提问来源于stack exchange,提问作者Eli Turasky
相关产品推荐
相关产品推荐

