この記事ではmatplotlibライブラリを使った散布図の描画方法をわかりやすく解説します。
サンプルコードをコピペしながらサクサク処理を試せますので、 ぜひ活用してみてくださいね。
散布図のシンプルな描画方法と、細かいオプション設定の方法を具体的に紹介していきます。
maplotlib.pyplot.scatter の引数
引数名 | 意味 | デフォルト |
---|---|---|
x, y | プロットデータの(x, y)座標 | |
s | マーカーの大きさ | |
marker | マーカーの形 | "o" |
c | マーカーの色 | |
cmap | マーカーのカラーマップ ※引数 c がfloat型の場合 | "virdis" |
alpha | マーカーの透明度 透明 0 〜不透明1 の数値で指定 | None |
edgecolors | マーカー枠線の色 | "face" |
linewidths | マーカー枠線の太さ | 1.5 |
norm | 正規化する際のNormalizeインスタンス ※引数 c がfloat型の場合 | None |
vmax, vmin | 正規化の最大値、最小値 正規化しない場合( None )はデータの最大値、最小値。※引数 norm がNone 以外の場合、引数vmax, vmin は無視される | None |
plotnonfinite | 有限でない値(inf, -inf, nan )の値をプロットするかプロットする: True プロットしない: False | False |
基本的な散布図
まずは基本的な散布図をプロットしてみましょう。
import numpy as np
import matplotlib.pyplot as plt
# x, yを乱数で生成
x = np.random.rand(100)
y = np.random.rand(100)
# 散布図を描画
plt.scatter(x, y)
plt.show()
(x, y)座標をランダムに100個生成してプロットしてみました。
プロット点のサイズ(s
)
散布図プロットのサイズを変更してみましょう。
import numpy as np
import matplotlib.pyplot as plt
# x, yを乱数で生成
x = np.random.rand(30)
y = np.random.rand(30)
# プロットのサイズを指定して、散布図を描画
plt.scatter(x, y, s=150)
plt.show()
各プロットのサイズが大きくなっていることがわかります。
マーカーの形(marker
)
散布図プロットのマーカーの形を変更してみましょう。
import numpy as np
import matplotlib.pyplot as plt
# x, yを乱数で生成
x = np.random.rand(100)
y = np.random.rand(100)
# マーカーの形を指定して、散布図を描画
plt.scatter(x, y, marker="+")
plt.show()
各プロットのマーカーが「+」の形になっていることがわかります。
matplotlibで指定できるマーカーの形は以下の通りです。
引数marker の値 | 意味 |
---|---|
"." | 点 |
"," | ピクセル |
"o" | 円 |
"^" | 三角形 |
"v" | 逆三角形 |
">" | 右向き三角形 |
"<" | 左向き三角形 |
"|" | 垂直線 |
"-" | 水平線 |
"1" | Yの字 |
"2" | 下向きYの字 |
"3" | 右向きYの字 |
"4" | 下向きYの字 |
"8" | 正八角形 |
"s" | 四角形 |
"p" | 正五角形 |
"P" | プラスパーク |
"*" | 星形 |
"h" | 正六角形(上頂点) |
"H" | 正六角形(横頂点) |
"+" | プラス(+) |
"x" | バツ印 |
"X" | バツマーク |
"d" | 細長いひし形 |
"D" | ひし形 |
プロットの色(c
)
散布図プロットの色を変更してみましょう。
import numpy as np
import matplotlib.pyplot as plt
# x, yを乱数で生成
x = np.random.rand(100)
y = np.random.rand(100)
# プロットの色を指定して、散布図を描画
plt.scatter(x, y, c="#F90716")
plt.show()
プロットの色が変わっていることがわかりますね。
他にも、プロットをバラバラの色にすることもできます。
import numpy as np
import matplotlib.pyplot as plt
# x, yを乱数で生成
x = np.random.rand(100)
y = np.random.rand(100)
color_value = np.random.rand(100)
# プロットの色を乱数で指定して、散布図を描画
plt.scatter(x, y, c=color_value)
plt.show()
各プロットの色を乱数配列で指定してプロットしてみました。
引数c
をfloat型の数値で指定する場合、デフォルトで"viridis"
というカラーマップに沿って数値が色で表現されます。
次に別のカラーマップを指定してみましょう。
プロットのカラーマップ(cmap
)
散布図プロットのカラーマップを変更してみましょう。
import numpy as np
import matplotlib.pyplot as plt
# x, yを乱数で生成
x = np.random.rand(100)
y = np.random.rand(100)
color_value = np.random.rand(100)
# プロットのカラーマップを指定して、散布図を描画
plt.scatter(x, y, cmap="Set2", c=color_value)
plt.show()
引数cmapに「Set2」というカラーマップを指定してみました。少し柔らかい印象になります。
matplotlibで指定可能なカラーマップはこちらが参考になりますよ!!
マーカーの透明度(alpha
)
散布図プロットの不透明度を変更してみましょう。
import numpy as np
import matplotlib.pyplot as plt
# x, yを乱数で生成
x = np.random.rand(100)
y = np.random.rand(100)
# プロットの透明度を指定して、散布図を描画
plt.scatter(x, y, alpha=0.25, c="b")
plt.show()
散布図の各プロットが透明がかった色に変わっていることがわかります。
マーカーの枠線の色(edgecolors
)
散布図マーカーの枠線の色を変更してみましょう。
import numpy as np
import matplotlib.pyplot as plt
# x, yを乱数で生成
x = np.random.rand(30)
y = np.random.rand(30)
# マーカーの枠線の色を指定して、散布図を描画
plt.scatter(x, y, edgecolors="r", s=100)
plt.show()
各プロットの枠線が赤色になっていることがわかります。
マーカーの枠線の太さ(linewidths
)
散布図マーカーの枠線の太さを変更してみましょう。
import numpy as np
import matplotlib.pyplot as plt
# x, yを乱数で生成
x = np.random.rand(30)
y = np.random.rand(30)
# マーカーの枠線の太さを指定して、散布図を描画
plt.scatter(x, y, linewidths=3, edgecolors="k", s=100)
plt.show()
マーカーの枠線の太さが大きくなっていることがわかりますね。
まとめ
今回はpythonのmatplotlibを使ってさまざまな散布図を描画する方法を具体的に紹介してきました。
ぜひ参考にして散布図を描画する際は活用してみてくださいね。