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

Matplotlib导出PGF时supylabel垂直对齐异常问题

解决Matplotlib Supylabel导出PGF后在LaTeX中垂直偏移的问题

问题根源

Matplotlib导出PGF文件时,supylabel的垂直位置计算基于自身绘图环境,而LaTeX文档的字体、页面布局或基线设置往往和Matplotlib默认环境不匹配,这就导致标签在LaTeX渲染时位置偏低——哪怕去掉所有刻度标签,这个问题也会存在。

具体解决方法

  • 手动微调supylabel的垂直位置
    直接通过y参数指定标签在整个画布中的垂直位置,配合transform=fig.transFigure确保基于全局坐标系统(0为底部,1为顶部),示例代码:

    import matplotlib.pyplot as plt
    
    fig, (ax1, ax2) = plt.subplots(2, 1)
    # 替换为你的绘图逻辑
    ax1.plot([1,2,3])
    ax2.plot([3,2,1])
    
    # 可根据实际偏移调整y值(比如0.52),确保在LaTeX中居中
    fig.supylabel("你的垂直标签", y=0.5, transform=fig.transFigure)
    fig.savefig("my_figure.pgf")
    
  • 统一Matplotlib与LaTeX的字体配置
    让Matplotlib使用和LaTeX文档一致的字体,避免字体差异导致的位置计算偏差,在代码开头添加配置:

    plt.rcParams.update({
        "text.usetex": True,
        "font.family": "serif",
        "font.serif": ["Computer Modern Roman"], # 匹配LaTeX默认字体
        "font.size": 12 # 和LaTeX文档字体大小对齐
    })
    

    这样生成的PGF文件在字体基线、行距上和LaTeX环境同步,标签位置会更准确。

  • 在LaTeX中微调PGF导入位置
    若不想修改Python代码,可在LaTeX导入PGF时用trim参数偏移图形:

    \includegraphics[trim=0 6 0 0, clip]{my_figure.pgf}
    

    trim格式为left bottom right top,单位是bp(1bp≈0.35mm),增加bottom数值相当于把图形上移,抵消标签偏低的问题,数值可根据实际偏移量调整。

  • 替代方案:在LaTeX中添加垂直标签
    彻底绕开Matplotlib的PGF标签问题,不在Python代码中设置supylabel,而是在LaTeX里手动添加:

    \begin{figure}[h]
        \centering
        \rotatebox{90}{\hspace{5cm}你的垂直标签} % \hspace调整水平位置
        \includegraphics{my_figure.pgf}
        \caption{图标题}
    \end{figure}
    

    这种方式完全由LaTeX控制排版,不会出现位置偏移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:12:48