web-dev-qa-db-ja.com

Matplotlib散布図は、リストの値に基づいて色を変更します

私はmatplotlibを初めて使用するので、リストの値に基づいて散布図のポイントの色を変更する方法を知りたいです。

実際、私は、プロットしたい2次元配列と、各ポイントについて、使用したい色を含む同じ行数のリストを持っています。

#Example
data = np.array([4.29488806,-5.34487081],
[3.63116248,-2.48616998],
[-0.56023222,-5.89586997],
[-0.51538502,-2.62569576],
[-4.08561754,-4.2870525 ],
[-0.80869722,10.12529582])
colors = ['red','red','red','blue','red','blue']
ax1.plot(data[:,0],data[:,1],'o',picker=True)

私の色のリストに合うようにcolorパラメータを設定するにはどうすればよいですか?

6
clechristophe

ラインプロットを使用するplt.plot()

plt.plot()は単一の色のみを許可します。したがって、単にデータと色をループして、各ポイントを個別にプロットできます。

_import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
data = np.array([[4.29488806,-5.34487081],
                [3.63116248,-2.48616998],
                [-0.56023222,-5.89586997],
                [-0.51538502,-2.62569576],
                [-4.08561754,-4.2870525 ],
                [-0.80869722,10.12529582]])
colors = ['red','red','red','blue','red','blue']
for xy, color in Zip(data, colors):
    ax.plot(xy[0],xy[1],'o',color=color, picker=True)

plt.show()
_

散布図の使用plt.scatter()

散布図を作成するには、scatterを使用します。これには引数cがあり、散布点の色を設定する多くの方法を許可します。

(a)簡単な方法の1つは、色のリストを提供することです。

_colors = ['red','red','red','blue','red','blue']
ax.scatter(data[:,0],data[:,1],c=colors,marker="o", picker=True)
_

(b)別のオプションは、データのリストを提供し、カラーマップを使用してデータをカラーにマップすることです

_colors = [0,0,0,1,0,1] #red is 0, blue is 1
ax.scatter(data[:,0],data[:,1],c=colors,marker="o", cmap="bwr_r")
_

必要な色のリストを使用して、plt.scatterの引数cを設定する必要があります。

import matplotlib.pylab as plt
import numpy as np

data = np.array([[4.29488806,-5.34487081],
[3.63116248,-2.48616998],
[-0.56023222,-5.89586997],
[-0.51538502,-2.62569576],
[-4.08561754,-4.2870525 ],
[-0.80869722,10.12529582]])

colors = ['red','red','red','blue','red','blue']
plt.scatter(data[:,0],data[:,1],marker='o',c = colors)
plt.show()

enter image description here

4
Serenity