今回は、Matplotlibでグラフに矢印(注釈)を表示する方法を紹介します。
プレゼンなどグラフに矢印を追加したい場面はよくありますので、そのときに役立つようにわかりやすく解説していきます。
| 目的 | 講座名 | 到達点 | レベル/前提 | 想定時間 | こんな人に | 評価 |
|---|---|---|---|---|---|---|
| 現場志向でPython×DSを通しで習得 | 米国データサイエンティストがやさしく教えるデータサイエンスのためのPython講座 | Python基礎〜NumPy/Pandas/ Matplotlib/Seaborn、 Docker+JupyterLabでの環境構築までハンズオン | 初心者〜初級(Mac推奨/軽いプログラミング経験があると◎) | 24時間 | Pythonの基礎固めは完了し、ステップアップをしたいかた | |
| 広く一式を“ブートキャンプ”形式で学ぶ | 【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜 | 統計・Python(Numpy/Pandas)〜機械学習(scikit-learn/TensorFlow)・可視化・Tableauまで網羅 | 初心者OK | 26時間 | データサイエンスとは何をする職業なのか知りたいかた | |
| AI/機械学習の入門(Colab対応・数学やさしめ) | みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2025年最新版】 | Python基礎+機械学習の基本(文字認識・株価分析などの小プロジェクト)をColabで体験 | 超初心者〜初級(中学数学レベルで可) | 10時間 | 手を動かしてAIを学習したいかた |
グラフに矢印(注釈)を表示: 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内のパラメータで矢印のプロパティを変更します。
注釈の文字と位置を変更
注釈の文字と位置(座標)を変更するには、textとxy, 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を小さくした方がシャープな矢印になることが確認できると思います。
まとめ
今回はグラフに矢印(注釈)を表示、変更する方法を紹介しました。
矢印(注釈)は、図をわかりやすく、図で何を表現したいかを相手に伝えるためには、
大事な手段です。
ぜひ、自由自在に矢印(注釈)を表示できるようになってください!
ここまで読んでくださりありがとうございます!


