PythonにTexを使用したMatplotlibラベルにNewlineを入れますか?
-
27-09-2019 - |
質問
Matplotlibでプロットのラベル(XlabelまたはYlabelなど)に新しいラインを追加するにはどうすればよいですか?例えば、
plt.bar([1, 2], [4, 5])
plt.xlabel("My x label")
plt.ylabel(r"My long label with $\Sigma_{C}$ math \n continues here")
理想的には、Yラベルが中央に配置されたいと思います。これを行う方法はありますか?ラベルにTex(「$」に囲まれている)とNewlineの両方があることが重要です。
解決
あなたの例はまさにそれがどのように行われるかです、あなたは使用します \n
. 。 Pythonが生の文字列として扱わないので、Rプレフィックスを外す必要があります
他のヒント
あなたは両方の世界の最高のものを持つことができます:ラテックスコマンドの自動「脱出」 と Newlines:
plt.ylabel(r"My long label with unescaped {\LaTeX} $\Sigma_{C}$ math"
"\n" # Newline: the backslash is interpreted as usual
r"continues here with $\pi$")
(3行を使用する代わりに、文字列を単一のスペースで分離することも別のオプションです)。
実際、Pythonは互いに続く文字列リテラルを自動的に連結し、生の文字列を混ぜることができます(r"…"
)および文字補間のある文字列("\n"
).
plt.bar([1, 2], [4, 5])
plt.xlabel("My x label")
plt.ylabel(r"My long label with $\Sigma_{C}$ math" + "\n" + "continues here")
生の文字列形式ではない新しいラインで文字列を連結するだけです。
次のMATPLOTLIB Pythonスクリプトは、新しい行でテキストを作成します
ax.text(10, 70, 'shock size \n $n-n_{fd}$')
以下には新しいラインがありません。テキストの前にRに注意してください
ax.text(10, 70, r'shock size \n $n-n_{fd}$')
所属していません StackOverflow