我正在使用matplotlib和乳胶标签作为轴,标题和颜色条标签
虽然它在大多数情况下都非常好用,但是当你使用\ text时,它会有一些问题。
一个非常简单的例子。
from matplotlib import pyplot as plt
plt.plot([1,2,3])
plt.title(r"$f_{\text{cor, r}}$")
plt.show()
这将导致如下错误消息:
IPython/core/formatters.py:239: FormatterWarning: Exception in image/png formatter:
f_{\text{1cor, r}}
^
Unknown symbol: \text (at char 3), (line:1, col:4)
FormatterWarning,
有没有简单的方法在那里使用\ text?
答案 0 :(得分:37)
\text
无效,因为它需要 amsmath 包(不包含在mathtext中 - matplotlib的数学渲染引擎)。所以你基本上有两个选择:
from matplotlib import pyplot as plt
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True
mpl.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}'] #for \text command
plt.plot([1,2,3])
plt.title(r"$f_{\text{cor, r}}$")
plt.show()
\mathrm
代替\text
from matplotlib import pyplot as plt
import matplotlib as mpl
mpl.rcParams['text.usetex'] = False # not really needed
plt.plot([1,2,3])
plt.title(r"$f_{\mathrm{cor, r}}$")
plt.show()
后一种方法创造了一个像
请注意,与\text
命令不同,\mathrm
环境中的空格不受尊重。如果您想在变量之间留出更多空间,则必须使用乳胶样式命令(\<space>
,\;
,...)。
答案 1 :(得分:1)
一个选项是让matplot lib use LaTeX directly用于文本呈现(而不是matplotlib提供的mathtext实现)。
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True
# (create your plot as before)
plt.title(r"$f_{\mathrm{cor, r}}$")
这需要完全正常工作的LaTeX安装。我似乎无法识别\text
,但\mathrm
确实有用(对于罗马家族&#39;字体)就好了。