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

