web-dev-qa-db-ja.com

散布図の各点の色を指定する(matplotlib)

Matplotlibを使用して作成した3Dプロットがあり、各ポイントに対応するrbg値のリストがあります。

X、Y、およびZデータがあり、次の形式の「カラーリスト」があります。

[ (r,g,b), (r,g,b), ... , (r,g,b) ]

各(x、y、z)点に一致します。

今、私は持っています

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')

ax.scatter(X, Y, Z)
plt.show()

各ポイントに特定の色が割り当てられるように、これらのRGBタプルを組み込む適切な方法は何ですか?

8
codycrossley

forループを使用して、各ポイントに各色を個別に割り当てました。これが私のコードです:

X = [1, 2, 3]
Y = [2, 5, 8]
Z = [6, 4, 5]
colors=["#0000FF", "#00FF00", "#FF0066"]

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')


for i in range(len(X)):
    ax.scatter(X[i], Y[i], Z[i], color=colors[i])
plt.show()

forループはポイントごとに進みます(したがって、[i]各X、Y、Z値の前にあり、色を1つずつ指定します。私の例では16進数の色を使用しましたが、必要に応じて他の色を使用できます。

5
Camon

Forループを使用したくない場合(大規模なリストでは非常に遅くなる可能性があります)RGBカラーリストでscatterコマンドをそのまま使用できますが、色をRGB(またはRGBA)のベクトルとして指定する必要があります。 )0と1の間の値

X = [0, 1, 2]
Y = [0, 1, 2]
Z = [0, 1, 2]
C = np.array([[255, 0, 0], [0, 255, 0], [0, 0, 255]])
fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')

ax.scatter(X, Y, Z, c = C/255.0)
plt.show()

3 colored points

19
kmader