2012-08-14 155 views
10

Estoy tratando de agregar algunas etiquetas de eje a un gráfico que contiene la letra griega 'rho'. Para hacer esto, quiero usar la capacidad LaTeX de Matplotlib pero parece tener un problema con el símbolo \ rho.Matplotlib LaTeX: Comportamiento incoherente con letras griegas (Específicamente rho)

Aquí está un ejemplo mínimo:

import matplotlib.pyplot as plt 
from matplotlib import rc,rcParams 

rc('text',usetex=True) 
rcParams.update({'font.size': 16}) 

plt.plot([0,1,2,3,4],[0,1,4,9,16]) 
plt.xlabel('\rho A_i') # works if \rho is replaced with, for example, \sigma 
plt.ylabel('Something else') 
plt.show() 

Al ejecutar la primera vez que tengo un montón de errores de látex y una ventana de la figura en blanco, a correr de nuevo muestra la gráfica pero el xlabel lee 'ho Ai' donde el i está subíndice como se esperaba.

Lo raro es que si reemplazo \rho con otra cosa, por ejemplo, \sigma, aparece correctamente. ¿Alguien puede decirme por qué no está contento con mi ejemplo de código y cómo solucionarlo?

Gracias.

P.s. Intenté poner la expresión en $..$, pero eso no cambió nada.

Respuesta

16

Creo que se supone que debes usar cadenas sin formato, y también usar los $ signos. Proveedores:

plt.xlabel(r'$\rho A_i$') 
+0

Como prueba: 'print ('\ r')' - Creo que '\ r' es probablemente un retorno de carro ... – mgilson

+0

yah, buen punto. – reptilicus

+0

Eso es todo gracias. Los '$ .. $' no son necesarios si no hay texto siguiendo el bit de la ecuación. Matplotlib parece adivinar dónde comienza la ecuación. – Dan

4

Tenga cuidado cuando se está utilizando \n, \r y así sucesivamente en una cadena. Esos son comandos para, p. entrar en una nueva línea, etc.

https://docs.python.org/2/library/re.html

Para asegurarse de que usted no utiliza estos operadores de expresiones regulares puso \\rho en lugar de \rho.

Cuestiones relacionadas