【问题标题】:Matplotlib axis label: \theta does not work \Theta doesMatplotlib 轴标签:\theta 不工作 \Theta 不工作
【发布时间】:2012-05-09 09:21:24
【问题描述】:

我在 matplotlib 中有一个奇怪的行为。使用以下内容,我得到了一个漂亮而闪亮的大 theta。只要我使用\theta 而不是\Theta 我就会得到

heta

作为轴标签

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 字符吗?如何获得?

【问题讨论】:

    标签: matplotlib axis-labels


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您的回复是基于对 python 字符串的误解。当你写 '\\t' 你逃避斜线。如果您不转义 '\',python 会将您的字符串解释为它应该包含一个制表符(符号为 \t)。这正是为什么在它前面加上“heta”和一个标签的原因。 joris 建议的解决方案也是可能的,因为它告诉 python 将原始字符串传递给乳胶而不是解释它。
      • 好的,现在我明白了。非常感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 2013-06-18
      相关资源
      最近更新 更多