Maison >développement back-end >Tutoriel Python >Comment coder en couleur les nuages ​​de points par valeurs de colonne en Python ?

Comment coder en couleur les nuages ​​de points par valeurs de colonne en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-19 14:47:02726parcourir

How to Color-Code Scatter Plots by Column Values in Python?

Graphiques à nuages ​​de points à codage couleur par valeurs de colonne en Python

Dans la visualisation de données, l'attribution de couleurs à différentes catégories peut améliorer la clarté et révéler des motifs. Cette fonctionnalité est facilement disponible dans ggplot2 pour R, mais comment pouvons-nous obtenir la même chose en Python en utilisant pandas et matplotlib ?

Mise à jour : améliorations Seaborn

Depuis la réponse originale , Seaborn est devenu une bibliothèque puissante pour créer des intrigues informatives et visuellement attrayantes. Ses mises à jour récentes offrent des fonctions pratiques pour colorer les nuages ​​de points en fonction des valeurs des colonnes :

  • Utilisation de seaborn.relplot : Cette fonction de haut niveau combine des aspects de matplotlib.pyplot.scatter et de Seaborn. FacetteGrille. Il gère automatiquement le codage des couleurs en fonction des paramètres de teinte et d'ordre spécifiés.
  • Mappage de matplotlib.pyplot.scatter à seaborn.FacetGrid : Semblable à l'approche originale, vous pouvez mapper la fonction scatter sur un FacetGrid et personnalisez les couleurs en fonction de la teinte.

Approche originale Pandas et Matplotlib

Pour ceux qui recherchent une approche directe avec Matplotlib, voici une fonction personnalisée qui attribue des couleurs aux points basés sur une colonne catégorielle :

<code class="python">import matplotlib.pyplot as plt
import pandas as pd

def dfScatter(df, xcol='Height', ycol='Weight', catcol='Gender'):
    fig, ax = plt.subplots()
    categories = np.unique(df[catcol])
    colors = np.linspace(0, 1, len(categories))
    colordict = dict(zip(categories, colors))

    df["Color"] = df[catcol].apply(lambda x: colordict[x])
    ax.scatter(df[xcol], df[ycol], c=df["Color"])
    return fig</code>

Cette fonction crée un dictionnaire de couleurs à partir de valeurs de catégorie uniques et attribue les couleurs correspondantes aux points de données. Le nuage de points est ensuite généré avec des points codés par couleur.

Exemple

Utilisation de l'exemple de cadre de données fourni :

<code class="python">df = pd.DataFrame({'Height': np.append(np.random.normal(6, 0.25, size=5), np.random.normal(5.4, 0.25, size=5)),
                   'Weight': np.append(np.random.normal(180, 20, size=5), np.random.normal(140, 20, size=5)),
                   'Gender': ["Male", "Male", "Male", "Male", "Male",
                              "Female", "Female", "Female", "Female", "Female"]})</code>

Appel de la fonction dfScatter avec le dataframe :

<code class="python">fig = dfScatter(df)
fig.savefig('color_coded_scatterplot.png')</code>

Produit un nuage de points où les points sont colorés par sexe :

[Image du nuage de points coloré par sexe]

Les fonctionnalités avancées de Seaborn et le La fonction dfScatter personnalisée offre des options flexibles pour ajouter un codage couleur aux nuages ​​de points en Python, rendant la visualisation des données plus informative et visuellement attrayante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn