84

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

4

4 に答える 4

121

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

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行を使用する代わりに、文字列を1つのスペースで区切ることも別のオプションです)。

実際、Pythonは相互に続く文字列リテラルを自動的に連結し、生の文字列(r"…")と文字補間("\n")を使用した文字列を混在させることができます。

于 2010-04-19T09:01:09.887 に答える
49

あなたの例はまさにそれがどのように行われるかであり、あなたはを使用します\n。ただし、Pythonが生の文字列として処理しないように、rプレフィックスを削除する必要があります

于 2010-04-17T22:37:40.773 に答える
16
plt.bar([1, 2], [4, 5])
plt.xlabel("My x label")
plt.ylabel(r"My long label with $\Sigma_{C}$ math" + "\n" + "continues here")

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

于 2014-11-07T03:01:03.500 に答える
3

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

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

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

ax.text(10, 70, r'shock size \n $n-n_{fd}$')
于 2014-04-28T16:19:54.430 に答える