散布図を使ってみる
散布図(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.7.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()

コメント