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

为什么LaTeX包siunitx会导致matplotlib图表部分文本出现垂直偏移?

问题原因

该对齐异常是siunitx 3.x版本的全局配置与matplotlib的LaTeX文本基线检测逻辑冲突导致:matplotlib通过解析LaTeX生成的dvi文件获取文本的边界框与垂直对齐位置,siunitx v3会在导言区修改字体间距、基线相关的全局参数,导致matplotlib读取到的基线位置偏移,最终出现图例、y轴刻度标签垂直对齐错位。

解决方案

三种经过验证的修复方案,按优先级尝试即可:

  • 方案1(兼容性最优,不影响siunitx功能):在LaTeX导言区加载siunitx后,添加\AtBeginDocument{\normalsize}重置文档初始化时的字体大小与基线参数,即可解决对齐问题。修改后的配置如下:
plt.rcParams['text.latex.preamble'] = '\n'.join([
    r'\usepackage{siunitx}',
    r'\AtBeginDocument{\normalsize}'
])
  • 方案2(适配旧版本matplotlib):如果方案1无效,可以额外开启matplotlib的dvipng兼容参数,强制调整dvi文件解析逻辑适配修改后的基线参数:
plt.rcParams['text.dvipnghack'] = True
  • 备选方案:如果不需要siunitx v3的新特性,可将siunitx降级至2.x版本,也可规避该冲突。
效果对比
修复前(未加配置引入siunitx)修复后
使用siunitx后对齐异常的图表未使用siunitx时对齐正常的图表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:18:05