Matplotlib で散布図の色を設定する
Suraj Joshi
2021年2月9日
Matplotlib でマーカーの色を設定するには、matplotlib.pyplot.scatter()
メソッドの c
パラメータを設定します。
散布図でマーカーの色を設定する
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7]
y = [2, 1, 4, 7, 4, 3, 2]
plt.scatter(x, y, c="red")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Simple Scatter Plot")
plt.show()
出力:
ここでは、scatter()
メソッドで c="red"
を設定することで、散布図のすべてのマーカーの色を赤に設定しています。
2つの異なるデータセットがある場合、c
パラメータの値を変えれば、それぞれのデータセットで異なる色を使用することができます。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7]
y1 = [2, 1, 4, 7, 4, 3, 2]
y2 = [4, 4, 5, 3, 8, 9, 6]
plt.scatter(x, y1, c="red")
plt.scatter(x, y2, c="green")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Scatter Plot of two different datasets")
plt.show()
出力:
ここでは、散布図の中のデータセット y1
は赤で、データセット y2
は緑です。
データセットの数が非常に多い場合、毎回手動で色を割り当てるのは困難です。そのような場合には、colormap
を用いて各データセットの色を生成することができます。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
x = np.array([1, 2, 3, 4, 5])
y = np.random.random((10, 5))
colors = cm.rainbow(np.linspace(0, 1, y.shape[0]))
for dataset, color in zip(y, colors):
plt.scatter(x, dataset, color=color)
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
出力:
これは行列 y
の各行に対して異なる色を生成し、各行を異なる色でプロットします。
生成されたカラーマップを用いる代わりに、散布図に用いる色をリストで指定し、そのリストを itertools.cycle()
メソッドに渡してカスタムカラーサイクラーを作成することもできます。色を繰り返し処理するには、next()
関数を用います。
import itertools
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
x = np.array([1, 2, 3, 4, 5])
y = np.random.random((10, 5))
color_cycle = itertools.cycle(
["orange", "pink", "blue", "brown", "red", "grey", "yellow", "green"]
)
for row in y:
plt.scatter(x, row, color=next(color_cycle))
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
出力:
itertools.cycle()
メソッドは与えられた色の集合から周期的な色のリストを作成し、各行は周期的なリストから色を選んで散布図にプロットします。
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn