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
相关产品推荐
相关产品推荐

