web-dev-qa-db-ja.com

Matplotlib軸ラベル:\ thetaは機能しません\ Thetaは機能します

Matplotlibで奇妙な動作をします。以下を使用すると、素敵で光沢のある大きなシータが得られます。 \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文字を使用できますか?どうすれば入手できますか?

16
louis cypher

文字列が生のテキスト(引用符の前のr)であることを指定すると、機能します。このような:

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

予期しない結果が得られた理由は、\tがタブを意味するためです。したがって、\thetaと入力すると、\tとして解析されてhetaが続きます。生の文字列を指定した場合、バックスラッシュとpythonエスケープは処理されません。

生の文字列を使用しない場合は、バックスラッシュ(\\)をエスケープする必要があるため、pythonは、タブ記号ではなくバックスラッシュとして扱います(\ theta and\tやhetaとしてではありません)。そのため、\\thetaが機能しました。特殊文字にはバックスラッシュを多く使用するため、常に二重のバックスラッシュを記述する必要がないように、latexを使用する場合は生の文字列を使用してください。

31
joris

\\thetaを使用して仕事をしました。とにかく、これは本当に奇妙な振る舞いであり、私の目には、それが\thetaであるか\Thetaであるかに関係なく、修正する必要があります。それについて何か考えはありますか?

6
louis cypher