195 votes

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?

206voto

Joe Kington Points 68089

Il n'y a pas besoin de configurer manuellement les couleurs. Il suffit de spécifier une palette 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()

enter image description here

Ou, si vous préférez un plus large éventail de réglages de palettes de couleur, vous pouvez également spécifier l' cmap kwarg d' 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. mpl.cm.gray_r au lieu de mpl.cm.gray. Il existe plusieurs niveaux de gris colormaps pré-faites (par exemple, gray, gist_yarg, binary, etc).

import matplotlib.pyplot as plt
import matplotlib as mpl
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=mpl.cm.gray)
plt.show()

31voto

joaquin Points 22450

Dans 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:

from matplotlib import pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [125, 32, 54, 253, 67, 87, 233, 56, 67]

color = [str(item/255.) for item in y]

plt.scatter(x, y, s=500, c=color)

plt.show()

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X