Il n'est pas nécessaire de définir manuellement les couleurs. À la place, spécifiez une palette de couleurs en niveaux de gris ...
import numpy as np
import matplotlib.pyplot as plt
# Generate data...
x = np.random.random(10)
y = np.random.random(10)
# Plot...
plt.scatter(x, y, c=y, s=500)
plt.gray()
plt.show()
Ou, si vous préférez une gamme plus large de couleurs , vous pouvez également spécifier le cmap
kwarg à scatter
. Pour utiliser la version inversée de l'un d'entre eux, spécifiez simplement la _r
version " " de l'un d'entre eux. Par exemple gray_r
au lieu de gray
. Il y a plusieurs niveaux de gris différents colormaps pré-faites (par exemple gray
, gist_yarg
, binary
, etc.).
import matplotlib.pyplot as plt
import numpy as np
# Generate data...
x = np.random.random(10)
y = np.random.random(10)
plt.scatter(x, y, c=y, s=500, cmap='gray')
plt.show()
mpl.cm
est également disponible directement sous forme deplt.cm
.plt.contour()
ouplt.contourf()
- mais c'est une question différenteDans matplotlib, les couleurs grises peuvent être données sous la forme d'une chaîne d'une valeur numérique comprise entre 0-1.
Par exemple
c = '0.1'
Ensuite, vous pouvez convertir votre troisième variable en une valeur à l'intérieur de cette plage et l'utiliser pour colorer vos points.
Dans l'exemple suivant, j'ai utilisé la position y du point comme valeur qui détermine la couleur:
la source
c
argument, avec des valeurs alpha dans la quatrième colonne. Si la troisième variable est Z, avecshape=(n,1)
, alorscolors = numpy.hstack((numpy.zeros_like(z), numpy.zeros_like(z), numpy.ones_like(z), z/z.max()))
donne un très bel effet (bien sûr, il peut être modifié).plt.colorbar()
fera çaParfois, vous devrez peut-être tracer la couleur avec précision en fonction du cas de la valeur x . Par exemple, vous pouvez avoir un dataframe avec 3 types de variables et quelques points de données. Et vous voulez faire la suite,
Dans ce cas, vous devrez peut-être écrire dans une fonction courte pour mapper les valeurs x aux noms de couleur correspondants sous forme de liste, puis transmettre cette liste à la
plt.scatter
commande.la source