2012-08-14 61 views
10

Sto cercando di aggiungere alcune etichette di assi ad un grafico che contiene la lettera greca "rho". Per fare questo voglio usare la capacità LaTeX di Matplotlib ma sembra che abbia un problema con il simbolo \ rho.MatTotlib LaTeX: Comportamento incoerente con lettere greche (in particolare rho)

Ecco un esempio minimo:

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() 

momento in esecuzione la prima volta che ricevo un sacco di errori LaTeX e una finestra figura vuota, in esecuzione di nuovo mostra il grafico, ma la xlabel recita 'ho Ai' dove lo i è pedice come previsto.

La cosa strana è se sostituisco \rho con qualcos'altro, diciamo, \sigma si presenta correttamente. Qualcuno può dirmi perché non è felice con il mio esempio di codice e come risolverlo?

Grazie.

P.s Ho provato a inserire l'espressione in $..$ ma questo non ha cambiato nulla.

risposta

16

Penso che si supponga di utilizzare stringhe non elaborate e di utilizzare anche i segni $. Prova:

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

Come prova: 'print ('\ r')' - Penso che '\ r' è probabilmente un ritorno a capo ... – mgilson

+0

yah, buon punto. – reptilicus

+0

Grazie. '$ .. $' non sono necessari se non c'è testo che segue il bit di equazione. Matplotlib sembra indovinare da dove inizia l'equazione. – Dan

4

Fare attenzione quando si utilizza \n, \r e così via in una stringa. Quelli sono comandi per es. entrando in una nuova linea ecc

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

Per assicurarsi di non utilizzare questi operatori per le espressioni regolari messo \\rho invece di \rho.

Problemi correlati