Matplotlib Pyplotでグラフの最大値に自動的に注釈を付ける方法
Pyplot(matplotlib.pyplot)でグラフの最大値に注釈を付けるには、以下の手順に従います。
手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- 新しい図を作成するか、既存の図をアクティブにします。
- x軸・y軸のデータポイントのリストを作成します。
- numpyを使用して、xとyのデータポイントをプロットします。
- y配列の中から最大値を求め、その最大値に対応する配列内の位置(インデックス)を取得します。
- 取得した座標に対して「local max」などの注釈を追加します。
- 図を表示するには、show() メソッドを使用します。
コード例
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.array([1, 3, 5, 3, 1])
y = np.array([2, 1, 3, 1, 2])
line, = ax.plot(x, y)
ymax = max(y)
xpos = np.where(y == ymax)
xmax = x[xpos]
ax.annotate('local max', xy=(xmax, ymax), xytext=(xmax, ymax + 5), arrowprops=dict(facecolor='black'),)
plt.show()処理のポイント解説
このコードの重要な部分を詳しく見ていきましょう。
- max(y):y配列から最大値を取得します。この例では
3が最大値となります。 - np.where(y == ymax):y配列の中で最大値が存在する位置(インデックス)を返します。
- x[xpos]:そのインデックスに対応するxの値を取得し、注釈を付ける座標を特定します。
- ax.annotate():注釈テキストの位置(
xytext)を矢印で指し示す対象の点(xy)から少し上にずらすことで、矢印付きの注釈を表示しています。arrowpropsで矢印の色などをカスタマイズできます。
出力結果
上記のコードを実行すると、折れ線グラフのピーク(最大値)の位置に黒い矢印とともに「local max」という注釈が自動的に表示されます。
この手法は、データ分析やレポート作成の際に、グラフ上の重要なポイント(最大値・最小値など)を視覚的に強調したい場合に非常に便利です。同様の方法で最小値に注釈を付けることも可能です(min(y) を使用)。
-
Matplotlib PyplotでフィギュアのAxes(軸)リストを取得する方法
MatplotlibのPyplotを使ってフィギュアに含まれるAxes(軸)のリストを取得するには、まずフィギュアを作成し、その後get_axes()メソッドを呼び出すことで、フィギュア内のすべてのAxesオブジェクトを取得できます。取得したAxesに対して、ラベルの設定などの操作を行うことが可能です。手順NumPyを使ってデータ点 xs と ys を作成し、figure()メソッドで新しいフィギュア(または既存のフィギュア)を生成します。add_subplot()メソッドを使用して、サブプロット配置の一部としてフィギュアにAxesオブジェクトを追加します。ここでは nrows=1、ncols
-
TkinterのEntryウィジェットから値を取得する方法【.get()メソッドの使い方】
Tkinterでアプリケーションを開発していると、作成したEntryウィジェット(テキスト入力欄)に入力された値を取得したい場面が出てきます。そんなときに活用できるのが.get()メソッドです。このメソッドを使うと、ユーザーが入力した内容を変数として受け取ることができ、その値を画面に表示したり、他の処理に利用したりできます。 実装例:入力したテキストをラベルに表示する ここでは、Entryウィジェットに入力されたテキストを取得し、Labelウィジェットを使って画面に表示する簡単なアプリケーションを作成してみましょう。 # tkinterライブラリをインポート from tkinter impo