我在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字符吗?我怎么得到一个?
答案 0 :(得分:26)
如果指定字符串是原始文本(引号前面为r
),则可以正常工作。像这样:
plt.ylabel(r"$\dot{\Theta}$[deg/s]")
您获得意外结果的原因是\t
表示标签。因此,如果您输入\theta
,则会将其解析为\t
并跟随heta
。如果将其指定为原始字符串,则不会处理反斜杠和python转义。
如果你不使用原始字符串,你必须转义反斜杠(\\
),以便python将其视为反斜杠而不是标签符号(因此\ theta而不是\ t和\ theta) )。这就是\\theta
完成这项工作的原因。为了避免总是要写双反斜杠,在使用latex时使用原始字符串,因为它对特殊字符使用反斜杠。
答案 1 :(得分:5)
使用\\theta
完成了这项工作。无论如何,这确实是一种奇怪的行为,在我看来,无论是\theta
还是\Theta
,都应该修复它。有什么想法吗?