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?