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

使用tikzplotlib导出LaTeX绘图效果与PNG不一致及尺寸调整问题

Python 结合 LaTeX 绘图样式匹配方案

现存问题

目前本地PNG预览和LaTeX编译效果存在偏差,核心原因有三个:

  1. 全局参数配置顺序错误:figure.figsize在画布创建之后才设置,未实际生效
  2. 混用pgf后端和tikzplotlib导出,两边渲染逻辑不统一
  3. tikzplotlib默认导出时会将样式控制权交给LaTeX侧重算,导致字体、元素位置和本地预览不一致

两种效果对比如下:

  • PNG预览输出:
    PNG输出效果
  • LaTeX编译输出:
    LaTeX编译输出效果

实现两端效果完全一致的操作步骤

  • 第一步:把所有matplotlib全局配置移到代码最前面,所有参数设置必须在创建画布、绘图操作之前完成,修正后的基础配置如下:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import tikzplotlib

# 注意:所有rcParams配置必须放在所有绘图逻辑最前面
matplotlib.rcParams.update({
    "pgf.texsystem": "pdflatex",
    "font.family": "serif",
    "font.size": 12, # 这里的数值必须和你LaTeX文档正文字号完全对应,比如正文是11pt就填11
    "text.usetex": True,
    "pgf.rcfonts": False,
    "figure.figsize": (6, 4) # 画布尺寸配置移到这里,不要在创建fig之后再改
})
# 如果用tikzplotlib导出,不需要开pgf后端,二选一即可
# matplotlib.use("pgf")
  • 第二步:导出tikz代码时加参数锁定样式,禁止LaTeX侧随意覆盖绘图属性,把原来的保存代码替换成:
tikzplotlib.save(
    r'你的保存路径\thermal_light_prob.tex',
    override_externals=True,
    # 下面两个参数直接控制图在LaTeX里的尺寸,不需要在LaTeX侧再缩放
    axis_width=r'\linewidth',
    axis_height=r'0.7\linewidth',
    # 固定各元素字号和正文一致
    extra_axis_parameters={
        'tick label style={font=\\normalsize}',
        'label style={font=\\normalsize}',
        'legend style={font=\\small}'
    }
)
  • 如果不想调tikz参数,直接用matplotlib导出PDF格式图片插入是最稳妥的方案,渲染效果和本地预览完全一致,不会有任何偏差,保存代码换成:
plt.savefig(r'你的保存路径\thermal_light_prob.pdf', bbox_inches='tight')

LaTeX侧调整绘图尺寸的方法

  • 如果你用\input导入tikz导出的.tex文件:不要在外层套\resizebox,不然会连字体一起缩放,导致字号和正文不匹配。尺寸直接在Python导出时通过axis_width、axis_height设置即可,比如要占满整行宽就设axis_width=r'\linewidth',占半栏就设axis_width=r'0.5\linewidth',高度按视觉效果调整比例就行。
  • 如果你插入的是PDF/PNG格式的图片:直接在\includegraphics里加尺寸参数即可,参考代码:
% 占满整行宽度,自动保持比例
\includegraphics[width=\linewidth,keepaspectratio]{thermal_light_prob.pdf}
% 固定宽度为8cm
\includegraphics[width=8cm,keepaspectratio]{thermal_light_prob.pdf}
  • 避坑提醒:不要在Python侧设固定英寸尺寸,又在LaTeX侧用缩放命令强制改大小,这是字号错位、样式变形的最常见原因。要么Python侧导出时就定好尺寸,LaTeX侧1:1插入;要么Python侧按相对比例导出,LaTeX侧只设宽度不做强制拉伸。

内容的提问来源于stack exchange,提问作者Ulrich P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:51:30