2012-04-29 32 views
11

Tengo un comportamiento raro en matplotlib. Usando lo siguiente, obtengo un gran theta grande y brillante. Tan pronto como yo uso \theta en lugar de \Theta consigoEtiqueta del eje Matplotlib: theta no funciona Theta does

heta

como una etiqueta de eje

plt.figure(**pd.figpropsHP) 
line=pd.lineCycler() 
for i in range(2): 
    for j in range(length-1): 
     velocity[i,j]=(velocity[i,j+1]-velocity[i,j])*1000 #multiplied with sampling rate 
    plt.plot(velocity[i,startstop[0]:startstop[1]],**next(line)) 
     #plt.show(pPosition) 
plt.xlabel("t[ms]")  
plt.ylabel("$\dot{\Theta}$[deg/s]") 
plt.ylim(-3000,-3000+yrangeV) 
plt.annotate('30ms',fontsize='9', xy=(30, -1000),xytext=(40, -1000),verticalalignment='center',arrowprops=myarrow) 
plt.annotate('8ms',fontsize='9', xy=(8, -1700),xytext=(40, -1700),verticalalignment='center',arrowprops=myarrow) 
plt.axvline(x=span2Stop,lw='0.3',c='0.5') 
plt.axvspan(spanStart, spanStop, facecolor='0.9', alpha=1,edgecolor='0.9',lw=0) 
plt.tight_layout() 
plt.savefig(imagePath + "collisionTestbedVmot.pdf") 

Alguna idea de lo que estoy haciendo mal? Lamentablemente, no tengo tiempo para comenzar cosas elegantes (integración de látex, etc.). ¿Puedo usar un personaje utf8 en su lugar? ¿Cómo obtengo uno?

Respuesta

21

Si especifica que la cadena es texto sin formato (un r antes de las comillas), funciona. De esta manera:

plt.ylabel(r"$\dot{\Theta}$[deg/s]") 

La razón por la que tiene un resultado inesperado es que \t significa una ficha. Por lo tanto, si escribe \theta, se analiza como \t y después de heta. Si lo especifica una cadena en bruto, las barras invertidas y los escapes de Python no serán tratados.

Si no utiliza cadenas sin formato, debe escapar de la barra invertida (\\), por lo que python la trata como una barra invertida y no como un símbolo de tabulación (como \ theta y no como \ t y heta). Es por eso que \\theta hizo el trabajo. Para evitar tener que escribir barras diagonales inversas, use cadenas sin procesar cuando use latex, ya que utiliza barras diagonales inversas para caracteres especiales.

3

usando \\theta hizo el trabajo. De todos modos, este es realmente un comportamiento extraño que, en mi opinión, debe ser corregido para hacerlo o no, sin importar si es \theta o \Theta. ¿Alguna idea sobre eso?

+3

su respuesta se basa en malentendidos de cadenas en python. Cuando escribes '\\ t', escapas de la barra. Si no escapa, la 'python' interpreta la cadena, ya que debe incluir una pestaña (cuyo signo es \ t). Es exactamente por eso que obtienes 'heta' y una pestaña en frente de ella. La solución sugerida por joris también es posible, ya que le dice a Python que pase una cuerda sin procesar al látex y no lo interprete. – Oz123

+0

OK, ahora lo tengo. ¡Muchas gracias! –

Cuestiones relacionadas