散布図(scatter)の使い方まとめ【matplotlib】

matplotlib

散布図を使ってみる

散布図(scatter)は scatter() を使用して描画する。

x座標, y座標を与えるだけでプロットでき、
x座標 = [0, 1, 2, 3, 4]
y座標 = [1, 2, 3, 4, 5]
を与えれば、(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)に点がプロットされる。

実際に散布図を描画してみましょう。

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)

plt.scatter(x, y)
plt.show()

便利オプションを使ってカスタマイズ

色の変更

まとめて色を変更

color にカラーネームを指定することで全ての散布図の点の色を変更できます。

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)

plt.scatter(x, y, color='green')
plt.show()

1つ1つ色を変更

まとめて変更はもちろんできますが、1つ1つの点の色を変更することも可能です。
具体的には color にカラーネームもしくはRGBのリスト(要素数は点の数だけ)を与えます。

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(4)
y = np.random.rand(4)

colors = ['blue', 'red', 'purple', 'black']
plt.scatter(x, y, color=colors)
plt.show()
import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)

colors = np.random.random_sample((50, 3))
plt.scatter(x, y, color=colors)
plt.show()

点の大きさ

scatterの点の大きさは s に大きさを与えることで変更ができます。

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)

plt.scatter(x, y, s=200)
plt.show()

点の形

点の形はscatterではデフォルトで●ですが、様々な形に変更することができ、
変更にはmarker引数を用います。
種類の一覧と与えれば良い文字列はmatplolitbのドキュメントをご覧ください。

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)

plt.scatter(x, y, marker="P")
plt.show()
matplotlib.markers — Matplotlib 3.4.1 documentation

透明度を設定

color引数でRGBAを与え、個別に透明度を設定することも可能ですが、alpha引数によって全ての点に対して透明度を設定することも可能です。

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)

plt.scatter(x, y, alpha=0.2)
plt.show()

枠線をカスタマイズ

scatterの点は塗りつぶし部と枠線によって構成されているので、枠線だけ色や線幅を設定することができる。

色を付ける

edgecolor引数を用いて色を設定する。
c , edgecolor と引数名が違うだけで与える内容は前述の色の変更と同じ。
カラーネームかRGB or RGBAを与える。

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)

plt.scatter(x, y, c='b',edgecolor='r', s=100)
plt.show()

線幅を変更

枠線は線幅を変更することも可能で、linewidth引数を使う。
与えるのは数値

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)

plt.scatter(x, y, c='b',edgecolor='r', linewidth=5, s=100)
plt.show()

コメント

タイトルとURLをコピーしました