すべての記事

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

広告この記事には広告・アフィリエイトリンクが含まれる場合があります。

目次

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

プレゼンなどグラフに矢印を追加したい場面はよくありますので、そのときに役立つようにわかりやすく解説していきます。

目的

講座名

到達点

レベル/前提

想定時間

こんな人に

評価

現場志向でPython×DSを通しで習得

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

Python基礎〜NumPy/Pandas/
Matplotlib/Seaborn、
Docker+JupyterLabでの環境構築までハンズオン

初心者〜初級(Mac推奨/軽いプログラミング経験があると◎)

24時間

Pythonの基礎固めは完了し、ステップアップをしたいかた

 
[review_stars 4.5/5]

広く一式を“ブートキャンプ”形式で学ぶ

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

統計・Python(Numpy/Pandas)〜機械学習(scikit-learn/TensorFlow)・可視化・Tableauまで網羅

初心者OK

26時間

データサイエンスとは何をする職業なのか知りたいかた

 
[review_stars 4/5]

AI/機械学習の入門(Colab対応・数学やさしめ)

みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2025年最新版】

Python基礎+機械学習の基本(文字認識・株価分析などの小プロジェクト)をColabで体験

超初心者〜初級(中学数学レベルで可)

10時間

手を動かしてAIを学習したいかた

 
[review_stars 3/5]

グラフに矢印(注釈)を表示: 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を小さくした方がシャープな矢印になることが確認できると思います。

まとめ

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

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

大事な手段です。

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

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

参考(おすすめ教材)

コメント

コメントはまだありません