Matplotlib : Comment colorer un nuage de points par valeur
Souvent, vous souhaiterez peut-être ombrer la couleur des points dans un nuage de points matplotlib en fonction d’une troisième variable. Heureusement, cela est facile à faire en utilisant la fonction matplotlib.pyplot.scatter() , qui adopte la syntaxe suivante :
matplotlib.pyplot.scatter(x, y, s=Aucun, c=Aucun, cmap=Aucun)
où:
- x : Tableau de valeurs à utiliser pour les positions de l’axe x dans le tracé.
- y : tableau de valeurs à utiliser pour les positions de l’axe y dans le tracé.
- s : la taille du marqueur.
- c : Tableau de valeurs à utiliser pour les couleurs des marqueurs.
- cmap : Une carte de couleurs à utiliser dans le tracé.
Vous pouvez utiliser c pour spécifier une variable à utiliser pour les valeurs de couleur et vous pouvez utiliser cmap pour spécifier les couleurs réelles à utiliser pour les marqueurs dans le nuage de points.
Ce tutoriel explique plusieurs exemples d’utilisation pratique de cette fonction.
Exemple 1 : Points de nuage de points de couleur par valeur
Supposons que nous ayons le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'x': [25, 12, 15, 14, 19, 23, 25, 29], 'y': [5, 7, 7, 9, 12, 9, 9, 4], 'z': [3, 4, 4, 5, 7, 8, 8, 9]}) #view DataFrame df x y z 0 25 5 3 1 12 7 4 2 15 7 4 3 14 9 5 4 19 12 7 5 23 9 8 6 25 9 8 7 29 4 9
Le code suivant montre comment créer un nuage de points à l’aide d’une palette de couleurs grises et en utilisant les valeurs de la variable z comme nuance de la palette de couleurs :
import matplotlib.pyplot as plt #create scatterplot plt.scatter(df.x, df.y, s=200, c=df.z, cmap='gray')
Pour cet exemple particulier, nous avons choisi la palette de couleurs « gris », mais vous pouvez trouver une liste complète des palettes de couleurs disponibles à utiliser dans la documentation des palettes de couleurs matplotlib .
Par exemple, nous pourrions à la place spécifier « Verts » comme palette de couleurs :
plt.scatter(df.x, df.y, s=200, c=df.z, cmap='Greens')
Par défaut, les marqueurs avec des valeurs plus grandes pour l’argument c sont ombrés plus foncés, mais vous pouvez inverser cette tendance en ajoutant simplement _r au nom du cmap :
plt.scatter(df.x, df.y, s=200, c=df.z, cmap='Greens_r')
Exemple 2 : Points de nuage de points de couleur par catégorie
Supposons que nous ayons le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'x': [25, 12, 15, 14, 19, 23, 25, 29], 'y': [5, 7, 7, 9, 12, 9, 9, 4], 'z': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']}) #view DataFrame df x y z 0 25 5 A 1 12 7 A 2 15 7 B 3 14 9 B 4 19 12 B 5 23 9 C 6 25 9 C 7 29 4 C
Le code suivant montre comment créer un nuage de points en utilisant la variable z pour colorer les marqueurs en fonction de la catégorie :
import matplotlib.pyplot as plt groups = df.groupby('z') for name, group in groups: plt.plot(group.x, group.y, marker='o', linestyle='', markersize=12, label=name) plt.legend()
Vous pouvez trouver plus de didacticiels Python ici .