Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibで散布図に平均線を引く方法をわかりやすく解説

Matplotlibで作成した散布図や折れ線グラフに平均線(平均値を表すライン)を追加したい場面は多くあります。データ全体の傾向を一目で把握できるため、データ分析やレポート作成において非常に便利なテクニックです。ここでは、numpymatplotlibを組み合わせて平均線を描く具体的な手順を紹介します。

平均線を描く手順

  • 図のサイズを設定し、サブプロット間および周囲の余白を調整します。
  • numpyを使ってx軸・y軸のデータポイントを作成します。
  • subplots()メソッドでfigureオブジェクトとサブプロットを作成します。
  • plot()メソッドで元となるx・yのデータをプロットします。
  • 配列xの平均値をnp.mean()で算出します。
  • 平均値をもとにしたy_avgのデータポイントをplot()メソッドで描画します。
  • legend()メソッドで凡例を図に配置します。
  • show()メソッドを実行して図を表示します。

サンプルコード

import numpy as np
from matplotlib import pyplot as plt

# 図のサイズとレイアウトの自動調整を設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# データポイントを作成
x = np.array([3, 4, 5, 6, 7, 8, 9])
y = np.array([6, 5, 4, 3, 2, 1, 6])

fig, ax = plt.subplots()
ax.plot(x, y, 'o-', label='line plot')

# xの平均値を求め、全データ点数分だけ繰り返して水平線を作る
y_avg = [np.mean(x)] * len(x)
ax.plot(x, y_avg, color='red', lw=6, ls='--', label="average plot")

plt.legend(loc=0)
plt.show()

実行結果

このコードを実行すると、元の折れ線グラフ(青色のマーカー付きライン)に加えて、xの平均値を通る赤い太い破線が表示されます。この破線が平均線です。

Matplotlibで散布図に平均線を引く方法をわかりやすく解説

ポイント解説

平均線を水平に引く仕組みはシンプルです。np.mean(x)でx配列の平均値を1つ算出し、それをリスト内包表記のように* len(x)でデータ点数分だけ複製しています。こうすることで、すべてのx座標に対して同じ高さ(平均値)のy座標が対応し、結果として水平な直線が描かれます。

また、color='red'で線の色を、lw=6で線幅を、ls='--'で破線スタイルをそれぞれ指定しており、元のデータラインと視覚的に区別しやすくなっています。縦方向の平均線を引きたい場合は、同様にnp.mean(y)を使ってx座標側に適用すれば実現できます。

  1. Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説

    Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。折れ線グラフをアニメーション化する基本手順subplots()メソッドを使用して、図(figure)とサブプロットを作成します。x軸・y軸それぞれの表示範囲(スケール)を設定します。NumPyを使って、xおよびtのデータ点を生成します。座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。plot()メソッドでxとFのデータを使い、折れ線

  2. 【Python・Matplotlib】散布図に線を重ねて描画(オーバープロット)する方法

    PythonのMatplotlibでは、scatter()メソッドでデータポイントの散布図を作成した後、plot()メソッドを使うことで、その散布図の上に自由に線を重ねて描画(オーバープロット)できます。回帰直線や基準線を可視化したい場合などに非常に便利なテクニックです。 実装の手順 figure()メソッドを使って、サイズ(4, 3)の新しい図を作成するか、既存の図をアクティブにします。 plt.axes()で現在の図に軸を追加し、それをカレントのAxesとして取得します。 scatter()メソッドで散布図のポイントを描画します。 ax.plot()メソッドで線を描画し、散布図の上に重ね