2012-04-29 9 views
11

Ho un comportamento strano in matplotlib. Usando quanto segue ottengo un grande theta bello e brillante. Non appena io uso \theta invece di \Theta ottengoEtichetta dell'asse Matplotlib: theta non funziona Theta fa

heta

come etichetta dell'asse

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

Tutte le idee che sto facendo male? Purtroppo non ho tempo per iniziare cose di fantasia (integrazione in lattice, ecc.). Posso usare invece un carattere utf8? Come ottengo uno?

risposta

21

Se si specifica che la stringa è testo non elaborato (a r prima delle virgolette), funziona. Come questo:

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

La ragione si ha un risultato inaspettato è che \t significa una scheda. Quindi se si digita \theta, viene analizzato come \t e successivo a heta. Se lo specifichi, una stringa non elaborata, i backslash e gli escape di python non saranno trattati.

Se non si utilizzano stringhe non elaborate, è necessario sfuggire alla barra retroversa (\\) in modo che python la consideri come una barra rovesciata e non come un simbolo di tabulazione (così come \ theta e non come \ t e heta). Ecco perché \\theta ha svolto il lavoro. Per evitare di dover sempre scrivere backslash doppie, usa stringhe raw quando usi il latex, dato che usa molto i backslash per i caratteri speciali.

3

utilizzando \\theta ha svolto il lavoro. Comunque questo è davvero un comportamento strano che, ai miei occhi, dovrebbe essere fissato per farlo o meno, non importa se è \theta o \Theta. Qualche idea a riguardo?

+3

la tua risposta è basata su equivoci di stringhe in python. Quando scrivi '\\ t' sfuggi al taglio. Se non si sfugge il '\' python interpreta la stringa come dovrebbe includere una scheda (a cui il segno è \ t). Questo è esattamente il motivo per cui prendi 'heta' e una scheda di fronte ad esso. La soluzione suggerita da joris è anche possibile, dal momento che dice a python di passare una stringa grezza in lattice e di non interpretarla. – Oz123

+0

OK, ora ce l'ho. Grazie mille! –

Problemi correlati