Réglage de la couleur différente pour chaque série dans le nuage de points sur matplotlib
Supposons que j'ai trois ensembles de données:
X = [1,2,3,4]
Y1 = [4,8,12,16]
Y2 = [1,4,9,16]
Je peux nuage de points présente:
from matplotlib import pyplot as plt
plt.scatter(X,Y1,color='red')
plt.scatter(X,Y2,color='blue')
plt.show()
Comment puis-je le faire avec 10 jeux?
J'ai cherché pour cela et pourrait trouver aucune référence à ce que je vous demande.
Edit: clarifier (j'espère) ma question
Si je l'appelle disperser plusieurs fois, je ne peut définir de la même couleur sur chaque scatter. Aussi, je sais que je peux définir une gamme de couleurs à la main, mais je suis sûr qu'il y est une meilleure façon de le faire.
Ma question est alors, "Comment puis-je automatiquement scatter-plot de plusieurs ensembles de données, chacune avec une couleur différente.
Si ça peut aider, je peux facilement attribuer un numéro unique à chaque ensemble de données.
- Quel est le point ici? La couleur peut être un tableau en tant que bien, mais que peut-on pas résoudre avec juste l'appel de disperser plusieurs fois?
- Si je l'appelle disperser plusieurs fois, j'obtiens les mêmes couleurs. Je vais mettre à jour ma question.
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas ce que vous entendez par "manuellement". Vous pouvez choisir un colourmap et de faire une couleur tableau assez facilement:
Ou vous pouvez faire votre propre couleur cycleur à l'aide de
itertools.cycle
et en spécifiant les couleurs que vous souhaitez passer en boucle, à l'aide denext
d'obtenir celui que vous voulez. Par exemple, avec 3 couleurs:Venez pour penser à elle, peut-être que c'est plus propre de ne pas utiliser
zip
avec le premier trop:plt.legend(['c{}'.format(i) for i in range(len(ys))], loc=2, bbox_to_anchor=(1.05, 1), borderaxespad=0., fontsize=11)
vers le bas ci-dessus donne-moi une légende avec les couleurs.La voie normale de la parcelle des parcelles avec des points de couleurs différentes en matplotlib est de passer d'une liste de couleurs en tant que paramètre.
E. g.:
Lorsque vous avez une liste de listes et que vous voulez leur couleur par liste.
Je pense que la façon la plus élégante est que suggesyted par @DSM,
il suffit de faire une boucle d'effectuer plusieurs appels à se disperser.
Mais si pour une raison quelconque vous voulais le faire avec juste un appel, vous pouvez faire une grande liste de couleurs, avec une compréhension de liste et un peu de division flooring:
Une solution facile
Si vous avez un seul type de collections (par exemple, l'éparpillement sans les barres d'erreur), vous pouvez également changer les couleurs après que vous avez tracées, parfois, cela est plus facile à effectuer.
Le seul morceau de code que vous avez besoin de:
La sortie vous donne differnent couleurs, même si vous avez beaucoup de différents nuages de points dans la même intrigue secondaire.
Vous pouvez toujours utiliser le
plot()
fonction de la façon:Cette question est un peu délicate, avant Jan 2013 et matplotlib 1.3.1 (Août 2013), qui est la plus ancienne version stable vous pouvez trouver sur matpplotlib site web. Mais après qu'il est tout à fait banale.
Parce que la version actuelle de
matplotlib.pylab.scatter
soutien attribution: gamme de couleurs au nom chaîne de caractères, un tableau de nombre à virgule avec la couleur de la carte, un tableau de RVB ou RVBA.cette réponse, c'est de consacrer à l' @Oxinabox infinie passion pour la correction de la version 2013 de moi-même en 2015.
vous avez deux options d'utilisation de nuages de points de commande avec plusieurs couleurs en un seul appel.
comme
pylab.scatter
d'aide au commandement de l'utilisation RGBA tableau à faire quelle que soit la couleur que vous voulez;retour au début de 2013, il n'y a aucun moyen de le faire, depuis la commande uniquement en charge une seule couleur pour l'ensemble de l'éparpillement point de collecte. Quand je faisais mes 10000 de projet en ligne je l'ai trouver une solution pour le contourner. il est donc très collante, mais je peux le faire dans n'importe quelle forme, la couleur, la taille et la transparence. cette astuce pourrait également s'appliquer à dessiner la trajectoire de la collection, la ligne de la collection....
le code est également inspiré par le code source de
pyplot.scatter
, j'ai juste dupliqué ce scatter n'sans déclencher à dessiner.la commande
pyplot.scatter
retour d'unPatchCollection
Objet, dans le fichier "matplotlib/collections.py" une variable privée_facecolors
dansCollection
classe et une méthodeset_facecolors
.donc à chaque fois que vous avez un éparpillement des points de tirage, vous pouvez faire ceci:
Cela fonctionne pour moi:
pour chaque série, l'utilisation aléatoire de couleurs rvb générateur
plt.scatter(your values to the graph, color= (np.random.random_sample(), np.random.random_sample(), np.random.random_sample()) )
. Vous avez parlé d'un RVB générateur et vous avez déclaré un RVB liste, les générateurs sont déclarées entre '()'