Matplotlib で散布図の色を設定する

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() メソッドは与えられた色の集合から周期的な色のリストを作成し、各行は周期的なリストから色を選んで散布図にプロットします。

関連記事 - Matplotlib Scatter Plot

  • Matplotlib で x、y 座標のリストをプロットする方法
  • Matplotlib で散布図の凡例を作成する方法
  • 関連記事 - Matplotlib Color

  • Matplotlib で散布図の凡例を作成する方法