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

如何关闭Matplotlib中PGF后端的自动转义功能?

解决Matplotlib PGF后端自动转义字符的问题

兄弟,我太懂你这种被PGF后端转义坑到的感觉了!之前我用它给LaTeX文档做图的时候,也碰到过类似的问题——明明字符串写得好好的,一导出成PGF就乱码或者直接生成失败,罪魁祸首就是它默认的自动字符转义。给你几个实用的解决办法:

1. 针对单个文本标签解决

如果只是某几个标题、坐标轴标签出问题,不用改全局配置,直接在设置文本的时候处理:

  • 要是你需要用LaTeX格式渲染,就在字符串前加r(原始字符串前缀),把敏感字符(比如_、%)用\转义:
import matplotlib.pyplot as plt

plt.plot([1,2,3])
plt.title(r"Experiment\_Result\_2024", usetex=True)
plt.savefig("result_plot.pgf")
  • 要是只是普通纯文本,不需要LaTeX解析,直接给这个文本元素加usetex=False,跳过转义:
plt.xlabel("Data%Sample", usetex=False)

2. 全局配置彻底禁用自动转义

如果整个图表里有一堆特殊字符,一个个改太麻烦,直接在PGF的全局配置里加个参数,同时把LaTeX的预amble配置好:

import matplotlib as mpl
mpl.use('pgf')

pgf_config = {
    "text.usetex": True,
    "pgf.rcfonts": False,  # 关键!禁用默认字体配置,避免自动转义
    "pgf.preamble": [
         r"\usepackage{amsmath}",
         r"\usepackage{amssymb}",
         r"\usepackage[utf8]{inputenc}"  # 支持UTF-8字符,比如中文、特殊符号
    ]
}
mpl.rcParams.update(pgf_config)

# 正常绘图即可
plt.plot([1,3,5])
plt.title(r"Plot with \% and \_ Characters")
plt.savefig("global_fix.pgf")

3. 特殊字符的小技巧

  • 对于LaTeX特别敏感的字符(#、&这些),除了转义,还可以把它们放在\text{}环境里,更稳妥:
plt.ylabel(r"\text{Sample & Group}")
  • 如果要加中文,记得在pgf.preamble里换成r"\usepackage{fontspec}"(适合XeLaTeX/LuaLaTeX编译器),并指定支持中文的字体,比如:
"pgf.preamble": [
    r"\usepackage{fontspec}",
    r"\setmainfont{SimSun}"
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:20:12