J'ai un tracé 3D que j'ai créé à l'aide de matplotlib, et j'ai une liste de valeurs rbg qui correspondent à chaque point.
J'ai les données X, Y et Z, puis j'ai une "liste de couleurs" du formulaire:
[ (r,g,b), (r,g,b), ... , (r,g,b) ]
pour correspondre à chaque (x, y, z) point.
En ce moment, j'ai
fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
ax.scatter(X, Y, Z)
plt.show()
Quelle est la manière appropriée d'incorporer ces tuples rgb afin que chaque point se voit attribuer une couleur spécifique?
J'ai utilisé une boucle for
pour attribuer individuellement chaque couleur à chaque point. Voici mon code:
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()
La boucle for
va point par point (d'où le [i]
devant chaque valeur X, Y, Z) et donne une couleur une par une. J'ai utilisé des couleurs hexadécimales pour mon exemple, mais vous pourriez probablement utiliser autre chose si vous le vouliez.
Si vous ne souhaitez pas utiliser une boucle for (qui peut être très lente pour les grandes listes) Vous pouvez utiliser la commande scatter telle quelle avec une liste de couleurs RVB, mais vous devez spécifier les couleurs comme vecteur RVB (ou RVBA ) valeurs comprises entre 0 et 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()