非常に基本的な質問があります。Pythonで「annotate」コマンドを使用してmatplotlibで改行を行う方法です。「\」と「\n」を試しましたが、機能しません。そして、「Latex」注釈と通常のテキスト注釈に対してこれを行う方法は?
どうもありがとうございます。
非常に基本的な質問があります。Pythonで「annotate」コマンドを使用してmatplotlibで改行を行う方法です。「\」と「\n」を試しましたが、機能しません。そして、「Latex」注釈と通常のテキスト注釈に対してこれを行う方法は?
どうもありがとうございます。
正確に何を試しましたか?
たまたま、生の文字列(例r"whatever"
)を使用していましたか?
'\n'
完全に機能しますが、ラテックスシーケンスがエスケープとして解釈されないように生の文字列を使用している場合は、Pythonによって改行の代わりに'\'
解釈されます。'n'
例として:
import matplotlib.pyplot as plt
plt.annotate('Testing\nThis\nOut', xy=(0.5, 0.5))
plt.show()
一方、生の文字列を使用する場合:
import matplotlib.pyplot as plt
plt.annotate(r'Testing\nThis\nOut', xy=(0.5, 0.5))
plt.show()
ただし、両方が必要な場合は、次の例を検討してください。
import matplotlib.pyplot as plt
a = 1.23
b = 4.56
annotation_string = r"Need 1$^\mathsf{st}$ value here = %.2f" % (a)
annotation_string += "\n"
annotation_string += r"Need 2$^\mathsf{nd}$ value here = %.2f" % (b)
plt.annotate(annotation_string, xy=(0.5, 0.5))
plt.show()
それはあなたに与えます:
重要なのは、を使用して事前に文字列を組み立てること+=
です。このようにして、raw-stringコマンド(で示されるr
)と改行(\n
)を同じアノテーションに含めることができます。
のように注釈文字列を定義するときに三重引用符を使用すると、文字列に string="""some text"""
入力した実際の改行が出力の改行として解釈されます。これは、ラテックスと、コードの他の部分からのいくつかの数値パラメーターの印刷を含む例です。
import matplotlib.pyplot as plt
I = 100
T = 20
annotation_string = r"""The function plotted is:
$f(x) \ = \ \frac{{I}}{{2}} \cos\left(2 \pi \ \frac{{x}}{{T}}\right)$
where:
$I = ${0}
$T = ${1}""".format(I, T)
plt.annotate(annotation_string, xy=(0.05, 0.60), xycoords='axes fraction',
backgroundcolor='w', fontsize=14)
plt.show()
私はいくつかの「エクストラ」を追加しました:
LaTeXインタプリタを容易にするために、冒頭の三重引用符のr
直前
コマンドとLaTeXが互いに混同しない{{}}
ように、二重中括弧。.format()
xycoords='axes fraction'
プロットの幅と高さに関して小数値で文字列の位置を指定しますbackgroundcolor='w'
注釈の周りに白いマーキーを配置するオプション(プロットと重なる場合に便利)クイックソリューション
plt.annotate("I am \n"+r"$\frac{1}{2}$"+"\n in latex math environment", xy=(0.5, 0.5))