Matplotlib nuage de points; la couleur en fonction d'une troisième variable
Je veux faire un nuage de points (à l'aide de matplotlib) où les points sont à l'ombre selon une troisième variable. J'ai de très près avec ceci:
plt.scatter(w, M, c=p, marker='s')
où w et M sont les points de données et p est la variable que je veux de l'ombre à l'égard de.
Cependant, je veux le faire en niveaux de gris plutôt que de la couleur. Quelqu'un peut-il aider?
Vous devez vous connecter pour publier un commentaire.
Il n'est pas nécessaire de régler manuellement les couleurs. Au lieu de cela, spécifier une palette en niveaux de gris...
Ou, si vous préférez une large éventail de la carte des couleurs, vous pouvez également spécifier le
cmap
kwarg àscatter
. Pour utiliser la version inversée de l'un de ces, il suffit de spécifier le "_r
" version de l'un d'eux. E. g.gray_r
au lieu degray
. Il existe plusieurs niveaux de gris colormaps pré-faites (par exemple,gray
,gist_yarg
,binary
, etc).mpl.cm
est également disponible directement commeplt.cm
.plt.contour()
ouplt.contourf()
-- mais c'est une autre questionDans matplotlib gris peut être donnée comme une chaîne de caractères en une valeur numérique entre 0 et 1.
Par exemple
c = '0.1'
Ensuite, vous pouvez convertir votre troisième variable à une valeur à l'intérieur de cette gamme à l'utilisation et à la couleur de vos points.
Dans l'exemple suivant, j'ai utilisé la position y du point que la valeur qui détermine la couleur:
c
argument, avec des valeurs alpha dans la quatrième colonne. Si le troisième variable Z, avecshape=(n,1)
, puiscolors = numpy.hstack((numpy.zeros_like(z), numpy.zeros_like(z), numpy.ones_like(z), z/z.max()))
donne un très joli effet (bien sûr, il peut être modifié).Parfois, vous devrez peut-être parcelle couleur précisément en fonction de la valeur x cas. Par exemple, vous pouvez avoir un dataframe avec 3 types de variables et de certains points de données. Et vous voulez faire à la suite,
Dans ce cas, vous pouvez avoir à écrire de courts fonction de mapper les valeurs de x correspondant à des noms de couleurs, comme une liste et ensuite transmettre cette liste à la
plt.scatter
commande.