You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib/seaborn绘制图表如何移动坐标轴至边框消除外侧留白

matplotlib多子图布局留白消除方案

这个需求完全可实现,你图里的两类留白分别是布局参数默认值、坐标轴距边距默认值导致的,按以下步骤修改即可:

  • 消除最外层(红色箭头标注)的画布边缘留白
    你当前用的plt.subplots_adjust(wspace =0, hspace =0)仅控制子图之间的横纵间距,没有设置画布边缘到子图区域的距离,补全四个边缘参数即可。如果要给X轴刻度预留显示空间,bottom参数不要设为0,留0.06~0.1的空间足够:
    plt.subplots_adjust(wspace=0, hspace=0, left=0, right=1, top=1, bottom=0.08)
    
  • 消除主图和头尾信息块之间(蓝色箭头标注)的网格空行
    你当前的网格布局里留了两处无意义空行:
    1. 头部信息块只占第0、1两行,主图却从第3行开始,中间空了第2行
    2. 主图占17行,从第3行起始的话到第20行就结束,你设置的footer起始行是mainChartRowspan+4=21,中间又空了1行
      直接修改两处参数即可:
    # 主图起始行从3改为2,紧贴头部信息块
    plotAxis = plt.subplot2grid(gridShape, (2, 0), colspan=6, rowspan=mainChartRowspan)
    # 底部块起始行偏移从+4改为+2,紧贴主图底部
    footerStartRow = mainChartRowspan+2
    
  • 消除主坐标轴内部内容和边框的默认间隙
    matplotlib默认会给坐标轴内的绘图区域留5%的边距,防止内容贴边,要实现参考图的贴边效果,直接给主绘图轴把边距设为0即可:
    # 如需保留Y轴方向的边距,可将y参数设为0.05这类小值
    plotAxis.margins(x=0, y=0)
    

改完之后所有子图块会完全铺满画布,主图内容也会和坐标轴边框对齐,和你提供的参考效果一致。

内容的提问来源于stack exchange,提问作者moys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 00:12:16