Matplotlib轴标签:\ theta不起作用\ Theta

lou*_*her 16 matplotlib axis-labels

我在matplotlib中有一个奇怪的行为.使用以下我得到一个漂亮和闪亮的大theta.一旦我使用\theta而不是\Theta我得到

赫塔

作为轴标签

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")
Run Code Online (Sandbox Code Playgroud)

我有什么想法我做错了吗?我很遗憾没有时间开始花哨的东西(乳胶整合等).我可以使用utf8字符吗?我怎么得到一个?

jor*_*ris 28

如果您指定该字符串是原始文本(r在引号之前),则它可以正常工作.像这样:

plt.ylabel(r"$\dot{\Theta}$[deg/s]")
Run Code Online (Sandbox Code Playgroud)

您得到意外结果的原因是这\t意味着一个标签.因此,如果您键入\theta,则会将其解析为\t以下内容heta.如果将其指定为原始字符串,则不会处理反斜杠和python转义.

如果你不使用原始字符串,你必须转义反斜杠(\\),因此python将其视为反斜杠而不是标签符号(因此\ theta而不是\ t和\ theta).这就是为什么\\theta做这份工作的原因.为了避免总是要写双反斜杠,在使用latex时使用原始字符串,因为它对特殊字符使用反斜杠很多.


lou*_*her 5

使用\\theta做了工作.反正这真是一个奇怪的行为,在我的眼里,应该是固定的去做与否,不管是否是\theta\Theta.有什么想法吗?

  • 你的回复是基于python中的误解字符串.当你写'\\ t'时,你会逃避斜线.如果你没有转义'''python解释你的字符串,因为它应该包含一个标签(标志是\ t).这正是为什么得到'heta'和它前面的标签.joris建议的解决方案也是可能的,因为它告诉python将原始字符串传递给latex而不解释它. (3认同)