24

非常に基本的な質問があります。Pythonで「annotate」コマンドを使用してmatplotlibで改行を行う方法です。「\」と「\n」を試しましたが、機能しません。そして、「Latex」注釈と通常のテキスト注釈に対してこれを行う方法は?

どうもありがとうございます。

4

4 に答える 4

19

正確に何を試しましたか?

たまたま、生の文字列(例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()

ここに画像の説明を入力してください

于 2012-04-23T17:59:02.480 に答える
16

ただし、両方が必要な場合は、次の例を検討してください。

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)を同じアノテーションに含めることができます。

于 2014-07-17T15:02:14.627 に答える
10

のように注釈文字列を定義するときに三重引用符を使用すると、文字列に 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'注釈の周りに白いマーキーを配置するオプション(プロットと重なる場合に便利)

得られたプロットは次のとおりです。 ここに画像の説明を入力してください

于 2016-03-04T01:50:10.520 に答える
6

クイックソリューション

plt.annotate("I am \n"+r"$\frac{1}{2}$"+"\n in latex math environment", xy=(0.5, 0.5))

于 2017-06-12T18:40:02.923 に答える