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

使用matplotlib导出pgf格式图片时如何在坐标轴标签加入粗体符号

问题原因

matplotlib的pgf导出后端与普通的TeX文本渲染使用两套独立的LaTeX序言配置,你仅在text.latex.preamble中引入了bm包,pgf编译时会读取单独的pgf.preamble配置,因此找不到\boldsymbol命令,触发未定义控制序列报错。

解决方案

在更新rcParams的代码段中增加pgf.preamble配置项,将bm包同步加入pgf的LaTeX序言即可,修改后的完整代码如下:

import seaborn as sns
import numpy as np
import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)
mpl.use('pgf')
mpl.rcParams.update({
    'pgf.texsystem': "pdflatex",
    'font.family': 'serif',
    'text.usetex': True,
    'pgf.rcfonts': False,
    'font.serif': ["Computer Modern Roman"],
    'pgf.preamble': r'\usepackage{bm}' # 新增本行配置
})
# 原有text.latex.preamble配置可根据需要保留或删除
# mpl.rc('text.latex', preamble=r'\usepackage{bm}')
import matplotlib.font_manager
import matplotlib.pyplot as plt

f, ax = plt.subplots(figsize = (8,4))
sns.set_color_codes("colorblind")
b = sns.barplot(x=probs, y=words, color='b')
ax.set(xlabel = r'{Probability of word, $p(w|\boldsymbol{\pi}_{ML})$}',
    ylabel = r'{Word, $w$}' )
b.set_yticklabels(labels=b.get_yticklabels(), va='center')
f.tight_layout()
plt.savefig('graph.pgf', format='pgf')

如果你的公式还用到其他第三方LaTeX包,也需要同步添加到pgf.preamble的配置值中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:06:04