\ text在matplotlib标签中不起作用

时间:2014-05-23 08:44:08

标签: python matplotlib

我正在使用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?

2 个答案:

答案 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()
  1. 使用mathtext但使用\mathrm代替\text
  2. 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()
    

    后一种方法创造了一个像 enter image description here
    请注意,与\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;字体)就好了。