23

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

任何想法我做错了什么?遗憾的是,我没有时间开始花哨的东西(乳胶集成等)。我可以改用 utf8 字符吗?我如何得到一个?

4

2 回答 2

42

如果您指定字符串是原始文本(r引号前的 a),它会起作用。像这样:

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

您得到意外结果的原因是这\t意味着一个选项卡。因此,如果您键入\theta,它会被解析为\t并跟随heta。如果将其指定为原始字符串,则不会处理反斜杠和 python 转义。

如果您不使用原始字符串,则必须转义反斜杠 ( \\),以便 python 将其视为反斜杠而不是制表符(如 \theta 而不是 \t 和 heta)。这就是为什么\\theta做这项工作。为了避免总是写双反斜杠,在使用 Latex 时使用原始字符串,因为它对特殊字符使用了很多反斜杠。

于 2012-04-29T09:10:06.047 回答
7

使用\\theta完成了这项工作。无论如何,这确实是一种奇怪的行为,在我看来,无论是\theta还是,都应该固定去做\Theta。对此有什么想法吗?

于 2012-04-29T08:32:40.147 回答