【Python】MatplotlibでX軸の範囲に矢印付き注釈を付ける方法
データ可視化において、グラフ上の特定の範囲を強調表示したい場面は多くあります。本記事では、PythonのMatplotlibを使って、X軸上の任意の範囲に両端矢印とラベルを付けて注釈する方法を、具体的なコード例とともにわかりやすく解説します。
実装の手順
X軸の範囲に注釈を付けるには、以下の手順で進めます。
figureサイズを設定し、サブプロット間の余白(パディング)を調整する。- NumPyを使ってxx・yyのデータ点を作成する。
subplots()メソッドで図とサブプロットを作成する。plot()メソッドでxx・yyのデータをプロットする。set_ylim()でY軸の表示範囲を設定する。annotate()メソッドを使って、矢印と範囲名のラベルを配置する。show()メソッドで図を表示する。
コード例
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# データ点の作成
xx = np.linspace(0, 10)
yy = np.sin(xx)
# 図とサブプロットの作成
fig, ax = plt.subplots(1, 1)
ax.plot(xx, yy)
ax.set_ylim([-2, 2])
# 両端に矢印を持つ線でX軸の範囲を示す
ax.annotate('', xy=(5, 2), xytext=(8, 2),
xycoords='data', textcoords='data',
arrowprops={'arrowstyle': '<|-|>'}, color='yellow')
# 範囲の名称をテキストとして追加
ax.annotate('Maximum Range', xy=(5, 5), ha='center', va='center', color='red')
plt.show()
コードのポイント解説
1. annotate()メソッドで矢印を描く
annotate()は本来テキスト注釈用のメソッドですが、第一引数に空文字列''を渡し、arrowpropsにarrowstyleを指定することで、矢印だけを描画できます。特に'<|-|>'スタイルを指定すると、両端に塗りつぶし矢頭を持つ双方向矢印になり、範囲を示すのに最適です。
xy=(5, 2):矢印の終点(データ座標)xytext=(8, 2):矢印の始点(データ座標)xycoords='data'/textcoords='data':座標をデータ座標系で解釈する指定
2. 範囲名のラベルを追加する
2つ目のannotate()では、「Maximum Range」という範囲名を赤色のテキストとして表示しています。ha='center'(水平方向中央揃え)とva='center'(垂直方向中央揃え)を指定することで、テキストが指定座標を中心に配置されます。
3. 図のサイズとレイアウト調整
plt.rcParams["figure.figsize"]で図のサイズを7.50×3.50インチに設定し、figure.autolayout = Trueにより、ラベルやタイトルが図の外にはみ出さないよう自動的に余白が調整されます。
出力結果
このコードを実行すると、正弦波のグラフ上に黄色い両端矢印がX=5からX=8の範囲に描かれ、その上方に「Maximum Range」という赤いラベルが表示されます。これにより、関心のあるX軸の区間を視覚的に強調できます。
まとめ
Matplotlibのannotate()メソッドとarrowstyleを組み合わせれば、X軸上の特定範囲を矢印とラベルで直感的に示すことができます。データの注目区間を強調したいプレゼン資料やレポート作成時に、ぜひ活用してみてください。
-
MatplotlibでParulaカラーマップを作成する方法を解説
Matplotlibには標準で用意されていない「Parula」カラーマップを自作して使いたい場面があります。この記事では、LinearSegmentedColormapを使ってParula風のカラーマップを簡単に作成する手順を、サンプルコード付きでわかりやすく紹介します。 作成の手順 MatplotlibでParulaカラーマップを作成するには、以下のステップに沿って進めます。 図のサイズと余白を設定する:plt.rcParamsでフィギュアサイズやサブプロット間・周囲のパディングを調整します。 Numpyでカラーマップ用のデータを作成する:カラーパターンの元となるデータを生成します。 Li
-
Matplotlibで図のマージン(余白)を設定する方法をわかりやすく解説
Matplotlibで作成するグラフの余白(マージン)を調整したい場合、margins()メソッドを使うことで簡単に設定できます。この記事では、実際のコード例とともに、マージン設定の基本的な手順を紹介します。margins()メソッドとはmargins()は、プロット領域の周囲にどれだけの余白を設けるかを指定するメソッドです。引数としてxやyに0〜1の範囲の値を渡すことで、軸方向ごとのマージン率を制御できます。例えばmargins(x=0, y=0)と指定すると、データ範囲ぴったりにプロットが表示され、余白がなくなります。実装手順figureサイズを設定し、サブプロット間および周囲のパディング