\ text не работает на метке matplotlib
Я использую matplotlib вместе с латексными ярлыками для меток оси, заголовка и цветаbar
В то время как он работает очень хорошо в большинстве случаев, он имеет некоторые проблемы, когда у вас есть формула с использованием \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 там?
Ответы
Ответ 1
\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()
- используйте 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()
Последний подход создает цифру, подобную
![enter image description here]()
Имейте в виду, что в отличие от команды \text
пробелы внутри среды \mathrm
не соблюдаются. Если вам нужно больше пространства между переменными, вы должны использовать команды латексного стиля (\<space>
, \;
,...).
Ответ 2
Один из вариантов заключается в том, чтобы позволить matplot lib использовать LaTeX напрямую для вашего текстового рендеринга (а не mathtext, которую предоставляет matplotlib).
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True
# (create your plot as before)
plt.title(r"$f_{\mathrm{cor, r}}$")
Для этого требуется полностью работающая установка LaTeX. Кажется, я не могу распознать \text
, но \mathrm
работает (для шрифта "roman family" ) просто отлично.