\ text no funciona en una etiqueta matplotlib

Estoy utilizando matplotlib junto con tags de látex para las tags de los ejes, títulos y barras de color

Aunque funciona muy bien la mayoría del tiempo, tiene algunos problemas cuando tienes una fórmula que usa \ text.

Un ejemplo realmente simple.

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

Esto resultará en un mensaje de error como:

 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, 

¿Hay una manera fácil de usar \ texto allí?

\text no funcionará porque requiere el paquete amsmath (no incluido en mathtext, el motor de representación matemática de matplotlib). Así que básicamente tienes dos opciones:

  • usar renderizado basado en látex
 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. usa mathtext pero usa \mathrm lugar de \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() 

El último enfoque crea una figura como introduzca la descripción de la imagen aquí
Tenga en cuenta que, a diferencia del comando \text , los espacios dentro del entorno \mathrm no se respetan. Si desea más espacio entre las variables, debe usar los comandos de estilo de látex ( \ , \; …).

Una opción es permitir que matplot lib use LaTeX directamente para la representación de texto (en lugar de la implementación de mathtext que proporciona matplotlib).

 import matplotlib as mpl mpl.rcParams['text.usetex'] = True # (create your plot as before) plt.title(r"$f_{\mathrm{cor, r}}$") 

Esto requiere una instalación LaTeX totalmente funcional. Parece que no puedo hacer que reconozca \text , pero \mathrm funciona (para la fuente de la ‘familia romana’) muy bien.