Maison >développement back-end >Tutoriel Python >Comment créer un nuage de points avec des marqueurs regroupés par catégorie en Python ?

Comment créer un nuage de points avec des marqueurs regroupés par catégorie en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-03 20:42:16440parcourir

How to create a scatter plot with markers grouped by category in Python?

Tracer un nuage de points regroupé par catégorie en Python

Problème :

Chez Pandas, comment créer un nuage de points avec des marqueurs représentant des données triées en catégories définies par un tiers colonne ?

Solution :

Pour créer efficacement un nuage de points regroupé par catégorie, utilisez la fonction plot au lieu de scatter. En effet, plot interprète les valeurs de la troisième colonne comme des catégories plutôt que comme des valeurs numériques.

Voici une solution étape par étape utilisant plot :

  1. Générer les données : Créez un DataFrame avec des colonnes représentant les données sur les axes x et y, ainsi qu'une colonne pour le catégories.
  2. Regroupez les données : Utilisez groupby() pour créer des groupes pour chaque catégorie.
  3. Tracez les données : Pour chaque groupe, tracez les valeurs x et y à l'aide de plot. Spécifiez Marker='o' pour représenter les données avec des cercles.
  4. Ajoutez une légende : Étiquetez les marqueurs avec les catégories respectives à l'aide de ax.legend().

Par exemple :

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
np.random.seed(1974)

# Generate Data
num = 20
x, y = np.random.random((2, num))
labels = np.random.choice(['a', 'b', 'c'], num)
df = pd.DataFrame(dict(x=x, y=y, label=labels))

groups = df.groupby('label')

# Plot
fig, ax = plt.subplots()
ax.margins(0.05)
for name, group in groups:
    ax.plot(group.x, group.y, marker='o', linestyle='', ms=12, label=name)
ax.legend()

plt.show()

Cela produira un nuage de points avec des marqueurs classés par valeurs dans la colonne « étiquette » et un légende qui identifie les catégories.

De plus, vous pouvez personnaliser l'apparence du tracé en ajustant le paramètre ax.margins(), en définissant la taille du marqueur (ms) et en spécifiant une palette de couleurs pour les marqueurs.

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