こんにちは、Kosei(@kay_diacc2)です!
【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とは・できること一覧
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら