Matplotlib でトレンドラインを作成する

Salman Mehmood 2024年2月15日
Matplotlib でトレンドラインを作成する

このデモ記事では、トレンドラインに関する短いデモを見て、Matplotlib でグラフに線形トレンドラインを作成する方法も見ていきます。

polyfit() メソッドを使用して Matplotlib でトレンドラインを作成する

傾向線は、プロット内のデータ ポイントを通る単純な線です。 傾向を推定し、それらを使用して予測を試みます。

必要なライブラリを Python にインポートすることから始めましょう。

import matplotlib.pyplot as plot
import numpy as np

摂氏の温度のデータ ベクトルと電圧のデータ ベクトルがあります。 Excel スプレッドシート、テキスト ファイル、または CSV ファイルがあれば、コードに簡単にインポートできます。

私たちの場合、7つのデータ ポイントを手動で入力しただけです。 温度を電圧の関数としてプロットします。

T = [20, 30, 40, 50, 60, 75, 100]
V = [1.02, 1.53, 2.05, 2.55, 3.07, 3.56, 4.05]

ソースコード:

import matplotlib.pyplot as plot

# Data vectors
T = [20, 30, 40, 50, 60, 75, 100]
V = [1.02, 1.53, 2.05, 2.55, 3.07, 3.56, 4.05]

# Plot data
plot.plot(V, T, "b*")
plot.xlabel("Voltage(V)")
plot.ylabel("Temp(C)")
plot.grid()
plot.show()

出力:

matplotlib にデータ ポイントを作成

次に、トレンドラインを作成します。 numpypolyfit() メソッドを使用してトレンド ラインを計算してみましょう。このメソッドは多項式フィット ラインを作成します。

polyfit() メソッドは、x 軸、y 軸、または X と Y 座標の辺を受け入れます。 3 番目のパラメーターは次数を受け取り、1 を渡します。1 は明らかに線形であるため、2 は 2 次になります。

coeff = np.polyfit(V, T, 1)  # 1=linear

その係数の最初の要素を変数 m に格納すると、b が y 切片になります。

m = coeff[0]
b = coeff[1]

次の構文を使用して傾向線をプロットします。 linspace() メソッドを呼び出す必要があります。このメソッドは、100 のデータ ポイントを持ついくつかの開始点と終了点を取得します。

Ttrend 変数には方程式が格納されており、この方程式はトレンドラインの作成に役立ちます。

Vtrend = np.linspace(V[0], V[-1], 100)
Ttrend = m * Vtrend + b

ソースコード:

import matplotlib.pyplot as plot
import numpy as np

# Data vectors
T = [20, 30, 40, 50, 60, 75, 100]
V = [1.02, 1.53, 2.05, 2.55, 3.07, 3.56, 4.05]

# Plot data
plot.plot(V, T, "b*")
plot.xlabel("Voltage(V)")
plot.ylabel("Temp(C)")
plot.grid()

# Compute the trendline
coeff = np.polyfit(V, T, 1)  # 1=linear

m = coeff[0]
b = coeff[1]

Vtrend = np.linspace(V[0], V[-1], 100)
Ttrend = m * Vtrend + b
plot.plot(Vtrend, Ttrend, "r")
plot.show()

出力:

matplotlib で polyfit() メソッドを使用して傾向線を作成する

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn