【Python】Matplotlibで折れ線グラフを作成|データ分析・可視化手法

当ページには広告が含まれています。

こんにちは、Kosei(@kay_diacc2)です!

本記事では「pythonライブラリであるMatplotlibの基本的な活用方法、及びグラフの可視化方法」を実際のプログラミングコードを用いてご紹介します。折線グラフの描画方法をベースとし、グラフタイトル・軸ラベル・軸の範囲設定など掲載すべき情報の付与方法について紹介します。次に、複数のグラフを同時に描く方法やグラフのスタイル変更など応用部分に触れます。

目次

【Python】MatplotlibによるX-Yグラフの可視化

まず、Matplotlibのライブラリをインポートします。次に、それぞれ軸に相当するデータを準備しましょう。

最後に、plt.plot(X軸, Y軸)で各軸を選択し、plt.show()でグラフを出力します。

#matplotlibのライブラリ
import matplotlib.pyplot as plt

#x軸とx軸を設定(今回はリストを用いて表現します。)
X = [5,7,9,12,15,17,19,21,23,25]
Y = [110,130,140,145,155,160,168,170,172,172]

#グラフプロット準備
plt.plot(X, Y)

#グラフ出力
plt.show()

タイトル、軸ラベル、軸の範囲を指定

上記グラフは「グラフタイトル」「軸ラベル」がありませんね。データの可視化に必要な要素を追加していきましょう。

軸ラベル・タイトルを記載し、軸の範囲設定を行うには下記のように記載します。

#軸ラベルの表示
plt.xlabel("X軸ラベル名を記述する")
#y軸ラベルの表示
plt.ylabel("Y軸ラベル名を記述する")

#グラフのタイトルの表示
plt.title("グラフのタイトル名を記述する")

#グラフ範囲を指定する
plt.xlim(X軸の開始値,X軸の終値)
plt.ylim(Y軸の開始値,Y軸の終値)

実際の記述例と出力結果はこちら!(年齢と身長の推移を示したグラフです)

#matplotlibのライブラリ
import matplotlib.pyplot as plt

#x軸とx軸を設定
X = [5,7,9,12,15,17,19,21,23,25]
Y = [110,130,140,145,155,160,168,170,172,172]

#x軸ラベル
plt.xlabel("年齢")
#y軸ラベル
plt.ylabel("身長[cm]")

#x軸範囲を指定
plt.xlim(5,25)
#y軸範囲を指定
plt.ylim(100,200)

#グラフタイトル
plt.title("A君の身長変化")

#グラフのプロット
plt.plot(X, Y)

plt.show()

複数のデータをプロットして比較

これまではX-Yグラフに1つのデータのみプロットしました。データ分析では、2つのデータを比較し、示唆を出すケースがあります。pythonでは以下のように記述することで比較可能です。

例として年齢-身長の時系列推移を示します。

#matplotlibのライブラリ
import matplotlib.pyplot as plt

#x軸とx軸を設定
X = [5,7,9,12,15,17,19,21,23,25]
Y1 = [110,130,140,145,155,160,168,170,172,172]
Y2 = [130,134,145,149,160,167,177,180,185,190] #New 新たなデータを追加

#x軸ラベル
plt.xlabel("年齢")
#y軸ラベル
plt.ylabel("身長[cm]")

#x軸範囲を指定(最小値、最大値)
plt.xlim(5,25)
#y軸範囲を指定(最小値、最大値)
plt.ylim(100,200)

#グラフタイトル
plt.title("A君とB君の身長変化")

#グラフのプロット
plt.plot(X, Y1, label="A君")  #2つのグラフを区別のため「ラベル」付与
plt.plot(X, Y2, label="B君") 

plt.legend() #凡例を表示
plt.show()

グラフのスタイル調整

グラフの背景色は、plt.style.use()を用いて調整できます。引数で指定できるスタイルは、Matplotlib style sheetsに一覧としてまとめられています。

plt.style.use("ggplot")

次に、グラフスタイルは、以下のコードを用いて調整可能です。

plt.plot(X, Y,marker="マーカーの形状",linestyle="ラインスタイル",color="色を指定",linewidth=線の幅,label="グラフのラベル")

実際の記述例はこちら!

#matplotlibのライブラリ
import matplotlib.pyplot as plt

#プロットのスタイルを変更
plt.style.use("ggplot")

#x軸とy軸を設定
X = [5,7,9,12,15,17,19,21,23,25]
Y1 = [110,130,140,145,155,160,168,170,172,172]
Y2 = [130,134,145,149,160,167,177,180,185,190] 

#x軸ラベル
plt.xlabel("年齢")
#y軸ラベル
plt.ylabel("身長[cm]")

#x軸範囲を指定(最小値、最大値)
plt.xlim(5,25)
#y軸範囲を指定(最小値、最大値)
plt.ylim(100,200)

#グラフタイトル
plt.title("A君とB君の身長変化")


#グラフのプロット
plt.plot(X, Y1,marker="o",linestyle="-",color="b",linewidth=3,label="A君")
plt.plot(X, Y2,marker="*",linestyle="-",color="#444444",linewidth=3,label="B君") 

plt.legend() #凡例を表示

plt.show()

Y-2軸グラフ作成:twinx()

最後に、2つのY軸を設定し、異なる形態のグラフを描画する方法をご紹介します。twinx()を用いることで描画可能です。

#2軸に設定する場合
ax2 = ax1.twinx()

実際の記述例はこちら!※subplotsを用いてグラフ作成することにご注意ください。

#matplotlibのライブラリ
import matplotlib.pyplot as plt

#プロットのスタイルを変更
plt.style.use("ggplot")

#x軸とy軸を設定
X = [5,7,9,12,15,17,19,21,23,25]
Y1 = [110,130,140,145,155,160,168,170,172,172]
Y2 = [1000,1000,2000,5000,10000,20000,50000,100000,200000,250000]

#subplotsを準備
fig,ax1 = plt.subplots(figsize=(8,6))

#プロット
ax1.plot(X,Y1,c="blue",marker=".",markersize=20,label="身長[cm]")

#ラベル関連
ax1.tick_params(labelsize=14)
ax1.set_ylabel("身長[cm]",fontsize=14)
ax1.set_xlabel("年齢",fontsize=14)
ax1.set_title("A君の成長軌跡",fontsize=15)
ax1.legend(fontsize=14)

#重要!!2軸情報追加
ax2 = ax1.twinx()

#重要!!2軸のプロット
ax2.plot(X,Y2,c="red",marker=".",markersize=20,label="おこずかい[円]")
ax2.tick_params(labelsize=14)
ax2.set_ylabel("おこずかい[円]",fontsize=14)
ax2.legend(fontsize=14,loc="upper center") #凡例

#x軸回転(必要に応じて)
labels = ax1.get_xticklabels()
plt.setp(labels,rotation=45);

【参考】Pythonでのデータ前処理・分析・可視化

当サイトではPythonを用いた「データ前処理手法」「データ分析」「グラフや表を用いた可視化」手法について幅広く解説しております。AI・機械学習にも応用できる内容となっておりますため、興味がある方は併せてご確認下さい。

Pythonを活用したデータ処理・分析手法一覧



【参考】Pythonとは・できること一覧

最後に

この記事が気に入ったら
フォローしてね!

目次