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

Matplotlib保存2×2子图PDF时列1轴标签被截断的解决方法

解决Matplotlib 2×2子图PDF保存时轴标签截断问题

以下是几种在保留bbox_inches="tight"的前提下,解决轴标签截断的可行方案:

  • 调整tight_layout的内边距参数
    默认的tight_layout内边距可能不足以容纳较长的轴标签,手动增大pad值可以给标签留出更多空间:

    fig.tight_layout(pad=2.0)  # pad值可根据实际标签长度调整,比如1.5、2.5等
    plt.savefig("my plot.pdf", format="pdf", bbox_inches="tight")
    plt.show()
    
  • 手动调整子图边距
    通过subplots_adjust精准控制子图区域的边距,针对第一列标签被截断的情况,重点增大左边距:

    fig.tight_layout()
    fig.subplots_adjust(left=0.15)  # left值按需调整,比如0.2、0.18
    plt.savefig("my plot.pdf", format="pdf", bbox_inches="tight")
    plt.show()
    
  • 使用constrained_layout替代tight_layout
    constrained_layout比tight_layout更智能,会自动计算所有元素(包括轴标签、标题)的空间需求,避免截断:

    # 创建子图时直接启用constrained_layout
    fig, axs = plt.subplots(2, 2, constrained_layout=True)
    # 此处添加你的子图绘制代码...
    
    plt.savefig("my plot.pdf", format="pdf", bbox_inches="tight")
    plt.show()
    

    也可以在创建figure后启用:

    fig, axs = plt.subplots(2, 2)
    # 绘制子图代码...
    fig.constrained_layout = True
    plt.savefig("my plot.pdf", format="pdf", bbox_inches="tight")
    plt.show()
    
  • 优化轴标签本身
    如果标签文本过长,可通过缩小字体或手动换行减少空间占用:

    # 缩小轴标签字体
    axs[0, 0].set_ylabel("你的轴标签内容", fontsize=10)
    # 或者用\n手动换行
    axs[0, 0].set_ylabel("标签第一行\n标签第二行")
    
    fig.tight_layout()
    plt.savefig("my plot.pdf", format="pdf", bbox_inches="tight")
    plt.show()
    

内容的提问来源于stack exchange,提问作者top north 5088

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:32:39