Gérer un trop grand nombre de catégories
Il arrive qu'on manque d'espace dans une figure et qu'on doive afficher beaucoup de données en même temps. Ici, vous voulez montrer la trajectoire sur un an de chaque polluant pour chaque ville du jeu de données pollution. Chaque trajectoire de polluant sera tracée comme une ligne dont la valeur en y correspond aux écarts types par rapport à la moyenne annuelle. Cela veut dire que vous aurez beaucoup de lignes dans le même graphique — bien plus que ce qu'on peut distinguer clairement avec la couleur.
Pour y arriver, vous avez décidé de mettre en évidence un petit sous-ensemble de combinaisons ville–polluant (wanted_combos). Ce sous-ensemble est le plus important pour vous, et les autres trajectoires fourniront un contexte utile pour la comparaison. Pour attirer l'attention, vous attribuerez la même couleur « autre » à toutes les trajectoires non mises en évidence.
Cette activité fait partie du cours
Améliorer vos visualisations de données en Python
Instructions de l’exercice
- Modifiez la compréhension de liste pour isoler les combinaisons ville–polluant souhaitées (
wanted_combos). - Indiquez au diagramme linéaire de colorer les lignes selon la nouvelle colonne
color_catsde votre DataFrame. - Utilisez l'argument
unitspour préciser comment, c'est‑à‑dire à partir de quelle colonne, les points doivent être reliés pour former chaque ligne. - Désactivez l'agrégation des points avec l'argument
estimator.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Choose the combos that get distinct colors
wanted_combos = ['Vandenberg Air Force Base NO2', 'Long Beach CO', 'Cincinnati SO2']
# Assign a new column to DataFrame for isolating the desired combos
city_pol_month['color_cats'] = [x if x in ____ else 'other' for x in city_pol_month['city_pol']]
# Plot lines with color driven by new column and lines driven by original categories
sns.lineplot(x = "month",
y = "value",
hue = '____',
units = '____',
estimator = ____,
palette = 'Set2',
data = city_pol_month)
plt.show()