Maison  >  Article  >  développement back-end  >  Pouvez-vous colorer des nuages ​​de points en fonction de valeurs de colonne spécifiques dans Pandas avec Matplotlib ?

Pouvez-vous colorer des nuages ​​de points en fonction de valeurs de colonne spécifiques dans Pandas avec Matplotlib ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-19 14:50:02753parcourir

Can You Color Scatter Plots Based on Specific Column Values in Pandas with Matplotlib?

Coloration des nuages ​​de points par valeurs de colonne à l'aide de Pandas et Matplotlib

Matplotlib est une bibliothèque Python populaire pour créer des visualisations statiques, animées et interactives dans Python. Cet article explore l'utilisation de Matplotlib pour colorer des nuages ​​de points en fonction des valeurs d'une colonne spécifique d'un Pandas DataFrame.

Importations et données

Pour commencer, nous importons les bibliothèques nécessaires , y compris Matplotlib (en tant que plt) et Pandas (en tant que pd). Nous générons également un exemple de DataFrame ("df") avec trois colonnes : "Taille", "Poids" et "Sexe".

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

np.random.seed(0)
N = 37
_genders = ["Female", "Male", "Non-binary", "No Response"]
df = pd.DataFrame({
    "Height (cm)": np.random.uniform(low=130, high=200, size=N),
    "Weight (kg)": np.random.uniform(low=30, high=100, size=N),
    "Gender": np.random.choice(_genders, size=N),
})</code>

Mise à jour en août 2021

Seaborn a introduit de nouvelles fonctions au niveau des figures, telles que seaborn.relplot dans la version 0.11.0. Ces fonctions sont recommandées plutôt que d'utiliser FacetGrid directement.

<code class="python">sns.relplot(data=df, x="Weight (kg)", y="Height (cm)", hue="Gender", hue_order=_genders, aspect=1.61)
plt.show()</code>

Ancienne réponse (2015)

Si vous souhaitez utiliser Matplotlib directement, vous devrez mapper les fichiers de matplotlib fonction scatter sur les catégories d'un Pandas DataFrame. Pour ce faire :

  • Créez un dictionnaire avec des catégories uniques à partir de la colonne et des couleurs.
  • Ajoutez une nouvelle colonne "Couleur" au DataFrame, en attribuant à chaque catégorie une couleur correspondante.
  • Utilisez la fonction scatter pour tracer les données, en spécifiant la colonne de couleur comme argument "c".
<code class="python">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

fig = dfScatter(df)
fig.savefig('fig1.png')</code>

En suivant ces étapes, vous pouvez facilement colorer les nuages ​​de points en fonction de valeurs de colonne à l'aide de Pandas et Matplotlib.

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