如何向已有的Matplotlib图形添加跨两行的子图?
解决方案
核心思路
先删除原有第三列的两个子图,再添加一个跨两行的子图,同时保留constrained_layout的自动布局支持。
具体代码实现
from matplotlib import pyplot as plt # 原有代码创建2行3列子图,开启constrained_layout fig, axes = plt.subplots(nrows=2, ncols=3, constrained_layout=True) # 此处为原有业务代码,已完成前4个子图(axes[0,0], axes[0,1], axes[1,0], axes[1,1])的绘制 # 删除第三列的两个默认子图,避免布局冲突 for ax in axes[:, 2]: ax.remove() # 添加跨两行的子图,占据第三列全部位置 # 2行3列布局中,第三列上下位置对应编号3和6,用元组(3,6)指定跨区域 ax5 = fig.add_subplot(2, 3, (3,6)) # 示例:在新子图上绘图 ax5.plot([1,3,5], [2,4,6]) ax5.set_title('跨两行子图') plt.show()
关键说明
ax.remove()用于清理原有第三列的子图,防止新子图与旧布局重叠fig.add_subplot(2, 3, (3,6))的参数中,(3,6)明确指定子图跨越2行3列布局里的第3、6号位置,实现跨两行的效果- 保留
constrained_layout=True,确保所有子图自动调整间距,无需手动设置边距
内容的提问来源于stack exchange,提问作者TomCho
相关产品推荐
相关产品推荐

