こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
目次
Python・Matplotlibを用いた散布図作成イメージ
本記事はPythonのMatplotlibを用いて散布図を描けるようになることを目的とした記事です。具体的な例として、上図4つの散布図を描けるよう解説していきます。
散布図を描くプログラムのひな型
散布図を描く際、下記のコードをひな型として用い、用途に合わせてデザインを膨らませていきます。
""" ライブラリ """
import matplotlib.pyplot as plt
""" (1) データの準備 """
data = {"X": [4,6,5], # X軸値
"Y": [9,1,4], # Y軸値
}
""" (2) グラフ描画設定 """
plt.scatter(
data["X"], # X軸値
data["Y"], # Y軸値
)
""" (3) 書式設定・出力設定 """
plt.xlabel("X軸") # X軸ラベル
plt.ylabel("Y軸") # Y軸ラベル
plt.title("タイトル") # タイトル
plt.show()
ここでscatter()メソッドには後述の引数を指定することで、柔軟に散布図をデザインできるようになります。
引数
スクロールできます
引数 | 概要 | デフォルト値(必須:★) |
---|---|---|
第一引数(X) | X軸データ | ★ |
第二引数(Y) | Y軸データ | ★ |
marker | マーカー形状 | ‘o’ |
s | サイズ | 20 |
c | カラー | Red |
cmap | カラーマップ | None |
edgecolor | 枠線のカラー | Red |
linewidth | 線の太さ | 1 |
alpha | 透明度 | 1 |
label | ラベル名 | None |
【実践】散布図作成(基本形)
実際に散布図を出力してみましょう!上図の散布図(基本形)は下記のプログラムをもとに出力します。
""" ライブラリ """
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib import rcParams
rcParams["font.family"] = "sans-serif"
rcParams["font.sans-serif"] = "Hiragino Maru Gothic Pro"
plt.style.use("ggplot")
""" (1) データの準備 """
data = {"X": [4,6,5,6,7,8,5,4,3,4,6,7,8,7,6,9,1,2,3,5,6,5], # X軸値
"Y": [9,14,7,9,6,5,4,4,6,7,7,6,5,5,1,2,5,6,7,4,3,5], # Y軸値
}
""" (2) グラフ描画設定 """
plt.scatter(
data["X"], # X軸値
data["Y"], # Y軸値
marker = "o", # マーカー形状
s = 100, # プロットサイズ
c = "blue", # カラー
edgecolor = "black", # 枠線カラー
linewidth = 1, # 線の太さ
alpha = 0.4, # 透明度
label = "サンプル" # ラベル
)
""" (3) 書式設定・出力設定 """
plt.xlabel("旅行者数") # X軸ラベル
plt.ylabel("新幹線利用者数") # Y軸ラベル
plt.title("旅行者vs新幹線利用率の相関調査") # タイトル
plt.legend(loc="best")
# plt.savefig("散布図1.png")
plt.show()
【実践】散布図作成(カラーマップ)
カラーマップを用いてデザインした散布図は下記をもとに出力します。
""" ライブラリ """
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib import rcParams
rcParams["font.family"] = "sans-serif"
rcParams["font.sans-serif"] = "Hiragino Maru Gothic Pro"
plt.style.use("ggplot")
""" (1) データの準備 """
data = {"X": [4,6,5,6,7,8,5,4,3,4,6,7,8,7,6,9,1,2,3,5,6,5], # X軸値
"Y": [9,14,7,9,6,5,4,4,6,7,7,6,5,5,1,2,5,6,7,4,3,5], # Y軸値
"Color": [4,3,6,5,4,3,2,4,5,6,6,7,8,7,7,6,5,4,3,7,8,9], # カラーマップ用
}
""" (2) グラフ描画設定 """
plt.scatter(
data["X"], # X軸値
data["Y"], # Y軸値
marker = "o", # マーカー形状
s = 100, # プロットサイズ
c = data["Color"], # カラー
cmap = "Greens", # カラーマップ
edgecolor = "black", # 枠線カラー
linewidth = 1, # 線の太さ
alpha = 0.9, # 透明度
label = "サンプル" # ラベル
)
""" (3) 書式設定・出力設定 """
plt.xlabel("旅行者数") # X軸ラベル
plt.ylabel("新幹線利用者数") # Y軸ラベル
plt.title("旅行者vs新幹線利用率の相関調査") # タイトル
plt.legend(loc="best")
# plt.savefig("散布図2.png")
plt.show()
【実践】散布図作成(カラーマップ&カラーバー)
カラーバー(cbar)を付与した散布図は、下記をもとに出力します。
""" ライブラリ """
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib import rcParams
rcParams["font.family"] = "sans-serif"
rcParams["font.sans-serif"] = "Hiragino Maru Gothic Pro"
plt.style.use("ggplot")
""" (1) データの準備 """
data = {"X": [4,6,5,6,7,8,5,4,3,4,6,7,8,7,6,9,1,2,3,5,6,5], # X軸値
"Y": [9,14,7,9,6,5,4,4,6,7,7,6,5,5,1,2,5,6,7,4,3,5], # Y軸値
"Color": [4,3,6,5,4,3,2,4,5,6,6,7,8,7,7,6,5,4,3,7,8,9], # カラー調整
"Size": [40,30,60,50,40,30,20,40,50,60,60,70,80,70,70,60,50,40,30,70,80,90] # サイズ調整
}
""" (2) グラフ描画設定 """
plt.scatter(
data["X"], # X軸値
data["Y"], # Y軸値
marker = "o", # マーカー形状
s = data["Size"], # プロットサイズ
c = data["Color"], # カラー
cmap = "Reds", # カラーマップ
edgecolor = "black", # 枠線カラー
linewidth = 1, # 線の太さ
alpha = 0.9, # 透明度
label = "サンプル" # ラベル
)
""" (3) 書式設定・出力設定 """
plt.xlabel("旅行者数") # X軸ラベル
plt.ylabel("新幹線利用者数") # Y軸ラベル
plt.title("旅行者vs新幹線利用率の相関調査") # タイトル
cbar = plt.colorbar() # cbar付与
cbar.set_label("旅行満足度") # 旅行満足度
plt.legend(loc="best")
# plt.savefig("散布図3.png")
plt.show()
【実践】散布図作成(条件付き色分け)
(X,Y)値を条件として散布図のデザインを変更したい場合、下記のように記述します。
""" ライブラリ """
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib import rcParams
rcParams["font.family"] = "sans-serif"
rcParams["font.sans-serif"] = "Hiragino Maru Gothic Pro"
plt.style.use("ggplot")
""" (1) データの準備 """
data = {"X": [4,6,5,6,7,8,5,4,3,4,6,7,8,7,6,9,1,2,3,5,6,5], # X軸値
"Y": [9,14,7,9,6,5,4,4,6,7,7,6,5,5,1,2,5,6,7,4,3,5], # Y軸値
}
data = pd.DataFrame(data)
""" (2) グラフ描画設定 """
data_1 = data[data["X"]<=3]
plt.scatter(
data_1["X"], # X軸値
data_1["Y"], # Y軸値
marker = "o", # マーカー形状
s = 100, # プロットサイズ
c = "blue", # カラー
edgecolor = "black", # 枠線カラー
linewidth = 1, # 線の太さ
alpha = 0.4, # 透明度
label = "サンプル(X<=3)" # ラベル
)
data_2 = data[data["X"]>3]
plt.scatter(
data_2["X"], # X軸値
data_2["Y"], # Y軸値
s = 100, # プロットサイズ
c = "red", # カラー
edgecolor = "black", # 枠線カラー
linewidth = 1, # 線の太さ
alpha = 0.4, # 透明度
label = "サンプル(X>3)" # ラベル
)
""" (3) 書式設定・出力設定 """
plt.xlabel("旅行者数") # X軸ラベル
plt.ylabel("新幹線利用者数") # Y軸ラベル
plt.title("旅行者vs新幹線利用率の相関調査") # タイトル
plt.legend(loc="best") # 凡例
# plt.savefig("散布図4.png")
plt.show()
【参考】Pythonでのデータ前処理・分析・可視化
当サイトではPythonを用いた「データ前処理手法」「データ分析」「グラフや表を用いた可視化」手法について幅広く解説しております。AI・機械学習にも応用できる内容となっておりますため、興味がある方は併せてご確認下さい。
Pythonを活用したデータ処理・分析手法一覧
【参考】Pythonとは・できること一覧
Pythonでできること・副業案件の探し方
「Pythonで実現できるお役立ち情報」を多数配信中!Python習熟者向けに「おすすめのPython副業・フリーランス案件の探し方」についてもご紹介してます。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら