1. ホーム
  2. python

[解決済み] Python のデータポイントにラベルを付ける

2023-02-23 09:22:06

質問

私は、本当に厄介な(基本的と思われる)問題の答えを見つけるために何時間も(何時間もというような)検索しました。そして、答えに完全に一致する質問を見つけることができないので、私が初心者プロッティング技術に費やした膨大な時間を他の誰かが節約できることを期待して、質問を投稿してそれに答えています。

python matplotlibを使ってプロットポイントにラベルを付けたい場合。

from matplotlib import pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

A = anyarray
B = anyotherarray

plt.plot(A,B)
for i,j in zip(A,B):
    ax.annotate('%s)' %j, xy=(i,j), xytext=(30,0), textcoords='offset points')
    ax.annotate('(%s,' %i, xy=(i,j))

plt.grid()
plt.show()

xytext=(30,0) が textcoords と一緒になっていることは知っていますが、これらの 30,0 値を使用してデータ ラベル ポイントを配置します。

iとjをプロットする両方の線が必要で、そうでなければxかyのデータラベルをプロットするだけです。

このようなものが出力されます(ラベルのみに注意)。

理想的とはいえませんが、何もしないよりはましです。

どのように解決するのですか?

どのように印刷するのですか? (x, y) を一度に表示する。

from matplotlib import pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

A = -0.75, -0.25, 0, 0.25, 0.5, 0.75, 1.0
B = 0.73, 0.97, 1.0, 0.97, 0.88, 0.73, 0.54

ax.plot(A,B)
for xy in zip(A, B):                                       # <--
    ax.annotate('(%s, %s)' % xy, xy=xy, textcoords='data') # <--

ax.grid()
plt.show()