web-dev-qa-db-ja.com

PythonでTeXを使用してmatplotlibラベルに改行を入れますか?

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(「$」で囲まれている)と改行の両方があることが重要です。

58
user248237

あなたの例は、まさにその方法です。\nを使用します。ただし、rプレフィックスを外す必要があります。そのためpythonはそれを生の文字列として扱いません

30
Michael Mrozek

両方の長所を活用できます。LaTeXコマンドの自動「エスケープ」and改行:

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")。

85
Eric O Lebigot
plt.bar([1, 2], [4, 5])
plt.xlabel("My x label")
plt.ylabel(r"My long label with $\Sigma_{C}$ math" + "\n" + "continues here")

文字列を、生の文字列形式ではない改行で連結するだけです。

11
Brothaman

次のmatplotlib pythonスクリプトは、新しい行でテキストを作成します

ax.text(10, 70, 'shock size \n $n-n_{fd}$')

以下に改行はありません。テキストの前のrに注意してください

ax.text(10, 70, r'shock size \n $n-n_{fd}$')
2
Ranaivo