"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-08
Parcourir:883

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".

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),
})

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.

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

Ancienne réponse (2015)

Si vous souhaitez utiliser Matplotlib directement, vous devrez mapper la fonction scatter de matplotlib 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".
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')

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

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729320559. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3