I am using matplotlib together with latex labels for the axis, title and colorbar labels
While it works really great most of the time, it has some issues when you have a formula using \text.
One really simple example.
from matplotlib import pyplot as plt
plt.plot([1,2,3])
plt.title(r"$f_{\text{cor, r}}$")
plt.show()
This will result in an error message like:
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,
Is there an easy way to use \text in there?
\text
won't work because it requires the amsmath package (not included in mathtext - the math rendering engine of matplotlib). So you basically have two options:
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
instead of \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()
The latter approach creates a figure like
Be aware that unlike with the \text
command, spaces inside the \mathrm
environment are not respected. If you want more space between the variables you have to use latex style commands (\<space>
, \;
, ...).