matplotlib中LaTeX轴标签的粗体字体重量

时间:2013-01-14 18:38:40

标签: python matplotlib latex

matplotlib中,您可以将轴标签的文字加粗

plt.xlabel('foo',fontweight='bold')

您也可以使用右后端的LaTeX

plt.xlabel(r'$\phi$')

然而,当你将它们组合时,数学文本不再是粗体

plt.xlabel(r'$\phi$',fontweight='bold')

以下LaTeX命令似乎也没有任何效果

plt.xlabel(r'$\bf \phi$')
plt.xlabel(r'$\mathbf{\phi}$')

如何在我的轴标签中加粗$\phi$

6 个答案:

答案 0 :(得分:21)

很遗憾,您无法使用粗体字体加粗符号,请参阅tex.stackexchange上的this question

如答案所示,您可以使用\boldsymbol加粗phi:

r'$\boldsymbol{\phi}$'

您需要将amsmath加载到TeX前言中:

matplotlib.rc('text', usetex=True)
matplotlib.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"]

答案 1 :(得分:15)

如果您打算在整个情节中使用一致的粗体字体,最好的方法是启用乳胶并在序言中添加\boldmath

# Optionally set font to Computer Modern to avoid common missing font errors
matplotlib.rc('font', family='serif', serif='cm10')

matplotlib.rc('text', usetex=True)
matplotlib.rcParams['text.latex.preamble'] = [r'\boldmath']

然后你的轴或图形标签可以有任何数学乳胶表达式,仍然是粗体:

plt.xlabel(r'$\frac{\phi + x}{2}$')

但是,对于非数学标签的部分,您需要将它们显式设置为粗体:

plt.ylabel(r'\textbf{Counts of} $\lambda$'}

答案 2 :(得分:3)

如果有人像我一样偶然发现了Google的这种情况,则另一种不需要调整rc前导码(并且与非胶乳文本冲突)的方法是:

ax.set_ylabel(r"$\mathbf{\partial y / \partial x}$")

答案 3 :(得分:0)

正如这句话Latex on python: \alpha and \beta don't work?指出的那样。您可能会遇到\b问题,因此\boldsymbol可能无法正常工作。在这种情况下,您可以在python代码中使用类似'$ \\\boldsymbol{\\\beta} $'的内容。如果您使用序言plt.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"]

答案 4 :(得分:0)

当使用 LaTeX 排版图形中的所有文本时,您可以使用 \textbf 将“普通”(非方程)文本设为粗体:

ax.set_title(r"\textbf{some text}")

答案 5 :(得分:0)

这些解决方案都不适合我,我很惊讶地发现这么简单的事情实现起来如此令人气愤。最后,这对我的用例有用。我建议您根据自己的使用情况进行调整:

plt.suptitle(r"$ARMA({0}, {1})$ Multi-Parameter, $\bf{{a}}$, Electrode Response".format(n_i, m), fontsize=16)

{0}{1} 指的是提供给 format 方法的位置参数,这意味着 0 指的是变量 n_i1 指的是变量 m

注意:在我的设置中,由于某种原因,\textbf 不起作用。我在某处读到 \bf 在 LaTeX 中已被弃用,但对我来说这是有效的。