【Python】Matplotlibでグラフに矢印を表示する方法

  • URLをコピーしました!

今回は、Matplotlibでグラフに矢印(注釈)を表示する方法を紹介します。

目次

グラフに矢印(注釈)を表示: plt.annotate

グラフに矢印を表示するには、plt.annotate()を使用します。

plt.arrow()でも矢印を表示することはできますが、

より簡単に使用できるplt.annotate()を使用することをおすすめします。

plt.annotate()は、グラフに矢印を表示する他に、テキストや注釈などを表示可能です。

plt.annotate()を使用したサンプルコードは以下の通りです。

import matplotlib.pyplot as plt

# サンプルデータ生成
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# プロット
plt.plot(x, y, label='Data')

# 矢印を描画する座標を指定
x_arrow = 4
y_arrow = 8

# annotate関数を使用して矢印を描画
plt.annotate('(4, 8)', xy=(x_arrow, y_arrow), xytext=(x_arrow+0.5, y_arrow+0.5),
             arrowprops=dict(headwidth=20, facecolor='blue', shrink=0.05))

# グラフを表示
plt.show()

実行結果

矢印についてイメージできたところで、annotate()で使用するパラメータについて説明していきます。

plt.annotateのパラメータ

plt.annnotate()で使用するパラメータについて説明します。

plt.annnotate()の主要なパラメータは以下の通りです。

パラメータ説明
text注釈
xy注釈の座標、タプル
xytext注釈のテキストの座標、タプル
arrowprops矢印のプロパティ
width矢印の幅
headwidth矢印の先端部分の幅
facecolor矢印の色
shrink矢印の先端部分のサイズ、0~1の間の値

arrowprops内のパラメータで矢印のプロパティを変更します。

注釈の文字と位置を変更

注釈の文字と位置(座標)を変更するには、textxy, xytextの値を変更します。

以下が変更例です。

import matplotlib.pyplot as plt

# サンプルデータ生成
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 矢印を描画する座標を指定
x_arrow = 2
y_arrow = 4
# 注釈のテキストを準備
words = ['A', 'B', 'c']

plt.plot(x, y, label='Data')

for i in range(len(words)):    
    # annotate関数を使用して矢印を描画
    plt.annotate(words[i], xy=(x_arrow+i, y_arrow+2*i), xytext=(x_arrow+0.5+i, y_arrow+0.5+2*i),
             arrowprops=dict(headwidth=20, facecolor='blue', shrink=0.05))

# グラフを表示
plt.show()

実行結果

wordsで指定した注釈をxyおよびxytextで位置を変更しています。

矢印の先端部分を変更

矢印の先端部分を変更には、headwidthを使用します。

さっそくサンプルコードを見てみましょう!

import matplotlib.pyplot as plt

# サンプルデータ生成
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 矢印を描画する座標を指定
x_arrow = 2
y_arrow = 4
# 注釈のテキストを指定
words = ['A', 'B', 'c']


plt.plot(x, y, label='Data')

# annotate関数を使用して矢印を描画
plt.annotate('A', xy=(2, 4), xytext=(2.5, 4.5),
            arrowprops=dict(headwidth=10, facecolor='blue', shrink=0.05))
plt.annotate('B', xy=(3, 6), xytext=(3.5, 6.5),
            arrowprops=dict(headwidth=20, facecolor='blue', shrink=0.05))
plt.annotate('C', xy=(4, 8), xytext=(4.5, 8.5),
            arrowprops=dict(headwidth=30, facecolor='blue', shrink=0.05))

# グラフを表示
plt.show()

実行結果

headwidthを小さくした方がシャープな矢印になることが確認できると思います。

まとめ

今回はグラフに矢印(注釈)を表示、変更する方法を紹介しました。

矢印(注釈)は、図をわかりやすく、図で何を表現したいかを相手に伝えるためには、

大事な手段です。

ぜひ、自由自在に矢印(注釈)を表示できるようになってください!

ここまで読んでくださりありがとうございます!

参考

おすすめ教材

米国データサイエンティストがやさしく教えるデータサイエンスのためのPython講座 icon

【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜 icon

他のUdemyの講座が気になる方はこちら

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

エンジニア。20代。組み込みエンジニアとして働き始めるも、働き方や業務内容に限界を感じ、 AI,Web3エンジニアを目指して勉強中。 エンジニアとして思うことや、学んだことを発信します。

目次