\ text在matplotlib标签中不起作用

Dan*_*ner 32 python matplotlib

我正在使用matplotlib和乳胶标签作为轴,标题和颜色条标签

虽然它在大多数情况下都非常好用,但是当你使用\ text时,它会有一些问题.

一个非常简单的例子.

from matplotlib import pyplot as plt
plt.plot([1,2,3])
plt.title(r"$f_{\text{cor, r}}$")

plt.show()
Run Code Online (Sandbox Code Playgroud)

这将导致错误消息,如:

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,
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法在那里使用\ text?

Jak*_*kob 46

\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()
Run Code Online (Sandbox Code Playgroud)
  1. 使用mathtext但使用\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()
Run Code Online (Sandbox Code Playgroud)

后一种方法创造了一个像 在此输入图像描述
请注意,与\text命令不同,\mathrm环境中的空间不受尊重.如果你想变量之间更多的空间,你必须使用乳胶样式的命令(\<space>,\;,...).

  • 当我尝试第一个时,我得到:`ValueError:Key text.latex.preamble:无法将 ['\\usepackage{amsmath}'] 转换为 str`。您知道问题可能是什么或如何解决吗? (2认同)