Couleurs des points avec matplotlib

Bonjour,

je veux placer des points sur le cercle trigonométrique, par exemple les racines $n$-ème de l'unité :
n = 30
X = [np.cos(2*k*np.pi/n) for k in range(n)]
Y = [np.sin(2*k*np.pi/n) for k in range(n)]

Je sais faire en utilisant cela :
plt.axis([-1.2, 1.2, -1.2, 1.2])
plt.plot(X, Y, 'ro')
for k in range(n):
    plt.text(X[k]*1.1, Y[k]*1.1, '%s' %k)
plt.show()

Déjà, je suis moyennement satisfaisait car je me doute que mon écriture des étiquettes sur les points est assez laborieuse. Mais je voudrais en plus que les points aient des couleurs différentes. Je sais faire en utilisant cela (je ne mets qu'un nombre limité de couleurs pour ne pas compliquer inutilement) :
plt.axis([-1.2, 1.2, -1.2, 1.2])
couleurs = ['b', 'g', 'r', 'c', 'm', 'y', 'k']
for k in range(n):
    plt.plot(X[k], Y[k], couleurs[k % len(couleurs)] + 'o')
    plt.text(X[k]*1.1, Y[k]*1.1, '%s' %k)
plt.show()

Mais c'est encore pire ici puisque je place les points un par un, donc ce n'est sans doute pas terrible en terme de performance. Je vois bien que ma question n'a pas vraiment d'implication pratique : la différence de temps de traitement pour ces deux scripts est négligeable pour 30 points et on ne mettra pas des étiquettes et des couleurs différentes pour un grand nombre de points, mais ça m'embête de laisser tel quel.

Réponses

Connectez-vous ou Inscrivez-vous pour répondre.