【python】matplotlibで散布図を描画する方法

この記事では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)はデータの最大値、最小値。
※引数normNone以外の場合、引数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を使ってさまざまな散布図を描画する方法を具体的に紹介してきました。

ぜひ参考にして散布図を描画する際は活用してみてくださいね。

よかったらシェアしてね!
目次