27

I have a weird behaviour in matplotlib. Using the following I get a nice and shiny big theta. As soon as I use \theta instead of \Theta I get

heta

as an axis label

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

Any ideas what I am doing wrong? I sadly do not have any time to start fancy stuff (latex integration etc.). Can I use an utf8 character instead? How do I get one?

Sap
  • 5,197
  • 8
  • 59
  • 101
louis cypher
  • 667
  • 1
  • 6
  • 13

2 Answers2

50

If you specify that the string is raw text (a r before the quotation mark), it works. Like this:

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

The reason you got an unexpected result is that \t means a tab. So if you type \theta, it is parsed as \t and following heta. If you specify it a a raw string, backslashes and python escapes will not be treated.

If you don't use raw strings, you have to escape the backslash (\\) so python treats it as a backslash and not as a tab symbol (so as \theta and not as \t and heta). That's why \\theta did the job. To avoid always have to write double backslashes, use raw strings when using latex, since it uses backslashes a lot for special characters.

joris
  • 133,120
  • 36
  • 247
  • 202
9

using \\theta did the job. Anyway this is really a strange behaviour that, in my eyes, should be fixed to do it or not no matter whether it is \theta or \Theta. Any thoughts about that?

louis cypher
  • 667
  • 1
  • 6
  • 13
  • 5
    your reply is based of misunderstanding strings in python. When you write '\\t' you escape the slash. If you don't escape the '\' python interprets your string as it should include a tab (to which the sign is \t). That is exactly why get 'heta' and a tab in front of it. The solution suggest by joris is also possible, since it tells python to pass a raw string to latex and not interpret it. – oz123 Apr 29 '12 at 13:43