Matplotlib offre de nombreuses options pour personnaliser un graphique de A à Z ! Mais il est parfois laborieux de modifier des éléments spécifiques pour obtenir une belle représentation. De plus, une petite modification peut très vite devenir plusieurs lignes de code si on n'y prend pas garde.
Identifiez quand utiliser Seaborn
La librairie Seaborn vient proposer une alternative à Matplotlib. C’est également une librairie permettant de générer des graphiques, tout comme Matplotlib. J'irai même plus loin en exprimant le fait que Seaborn est ce qu’on appelle une surcouche à Matplotlib.
Seaborn est exactement pareil vis-à-vis de Matplotlib. La librairie reprend les mêmes principes que Matplotlib, mais en ajoutant quelque chose “par-dessus”, afin d’offrir des qualités de graphiques différents, des nouvelles fonctionnalités, etc. Si vous me permettez une dernière image, on pourrait imaginer que Seaborn est une voiture flambant neuve dont l’ensemble du châssis et le moteur seraient Matplotlib.
Et du coup, quelles sont ces nouvelles fonctionnalités offertes par Seaborn ?
Seaborn vient corriger plusieurs défaut de Matplotlib :
il propose de multiples modèles graphiques prédéfinis de bonne qualité esthétique, en modifiant les options graphiques par défaut de Matplotlib ;
il ajoute une interaction avec les data frames afin de faciliter grandement la génération de graphiques à partir de ceux-ci ;
il propose un catalogue – très – dense de fonctions graphiques pour répondre le plus précisément possible à une problématique donnée.
En contrepartie, Seaborn propose un peu moins d’options de personnalisation en tant que telles.
Les deux librairies se complètent pour exploiter au mieux les avantages de l’une et de l’autre. C’est un mariage particulièrement harmonieux, que je vous invite à découvrir.
Prenez en main Seaborn
Seaborn étant une surcouche de Matplotlib, il y a donc de nombreuses ressemblances entre les deux librairies. Vous souhaitez réaliser un nuage de points ? Nous avions la fonctionscatter
avec Matplotlib, laissez-moi vous présenter la fonction…scatterplot
avec Searborn.
Voilà comment l’utiliser :
import seaborn as sns
sns.scatterplot(data=prets, x='revenu', y='taux_endettement')
Explicitons un peu son fonctionnement :
dans un premier temps, on définit le data frame qui va être utilisé pour tracer le graphique, via l’argument
data
;ensuite, il suffit de fixer les variables du data frame défini, à mettre en abscisse et en ordonnée.
Et le réel intérêt de Seaborn apparaît lorsqu’on essaie d’ajouter des dimensions supplémentaires, comme des couleurs ou des tailles de points.
Reprenons le même graphique en ajoutant en couleur le type de graphique tracé. Là où on avait besoin d’une boucle avec Matplotlib, voilà le code avec Seaborn :
sns.scatterplot(data=prets, x='revenu', y='taux_endettement', hue='type')
... pour obtenir :
![Application de la fonction scatterplot avec Seaborn pour générer un nuage de points avec revenu en abscisse et taux d'endettement en ordonnée pour le secteur immobilier en bleu et automobile en jaune](https://user.oc-static.com/upload/2022/05/16/16526933583674_1.png)
En précisant la variable via l’argumenthue
, Seaborn crée automatiquement une couleur pour chaque valeur existante.
À présent, plutôt que l’information du type de prêt, on souhaite ajouter l’information de la durée du prêt. On peut faire cela en associant la taille d’un point à la durée d’un prêt :
sns.scatterplot(data=prets, x='revenu', y='taux_endettement', size='duree')
Pour finaliser ce graphique, on peut utiliser les différentes fonctions de Matplotlib vues précédemment :
plt.figure(figsize=(10,6))
plt.rcParams.update({'font.size': 14})
sns.scatterplot(data=prets, x='revenu', y='taux_endettement', hue='type')
plt.ylabel("Taux d'endettement")
plt.xlabel('Revenu mensuel (€)')
plt.grid()
plt.xlim(500, 7500)
plt.legend(bbox_to_anchor=(1, 1.02))
plt.title("Taux d'endettement en fonction du revenu mensuel\npar type de prêt contracté")
plt.show()
![Application d'options Matplotlib à la fonction scatterplot de Seaborn pour améliorer un nuage de points](https://user.oc-static.com/upload/2022/05/16/16526938022685_2.png)
Explicitons les différentes fonctions utilisées :
La fonction
rcParams.update
, avec l’argumentfont.size
, définit pour tous les graphiques – et non pas uniquement le graphique actuel – la taille de la police de tous les éléments (xlabel, title, legend, etc.) à 14.grid
permet d’afficher le quadrillage.Via la fonction
xlim
, on fixe les limites des graduations de 500 à 7 500.La fonction
legend
affiche la légende sur le graphique. La petite nouveauté ici est l’utilisation de l’argumentbbox_to_anchor
permettant de fixer la position de la légende en dehors du graphique, aux coordonnées renseignées.
Agrégez des données avec Seaborn
Reprenons à présent le diagramme à barres du chiffre d'affaires par agence, réalisé précédemment. Avec Matplotlib, avant de tracer ce dernier, on avait eu besoin au préalable d’agréger nos données. La fonctionbarplot
de Seaborn nous permet de réaliser cette étape directement à l’intérieur du graphique :
sns.barplot(data=prets, x='ville', y='remboursement', ci=None, estimator=sum)
Le début est similaire à ce que nous avions vu avec la fonctionscatterplot
, mais nous découvrons ici deux nouveaux arguments :
ci
, pour confidence interval (ou intervalle de confiance), qui ajoute les intervalles de confiance à chaque barre. Fixer cet argument àNone
permet de les faire disparaître ;estimator
correspond à la fonction d’agrégation.
Tous les arguments vus précédemment fonctionnent également, notamment avoir des sous-groupes – par exemple : par type de prêt – en couleur :
sns.barplot(data=prets, x='ville', y='remboursement', ci=None, estimator=np.mean, hue='type')
... pour le résultat suivant :
![Application de la fonction barplot avec Seaborn pour créer un diagramme à barres comparant immobilier et automobile selon les villes](https://user.oc-static.com/upload/2022/05/16/16526937163725_3.png)
N’hésitez pas à tester toutes ces fonctions de votre côté pour apprécier la plus-value apportée par Seaborn.
Améliorez l’aspect graphique de vos visualisations
Enfin, je ne peux pas terminer ce cours sans vous parler de la façon dont Seaborn gère l’aspect graphique de ses visualisations. Je vous ai expliqué un peu plus tôt que Seaborn apportait un vrai plus esthétique par rapport à Matplotlib. Deux aspects permettent cela : les palettes graphiques et les thèmes.
Les palettes graphiques
Les palettes graphiques correspondent à un ensemble de couleurs qui vont être utilisées dans un graphique. Vous pouvez naturellement les définir vous-même, mais Seaborn propose plusieurs palettes, utilisables à votre guise, qui sont particulièrement harmonieuses.
Partons du graphique présentant le chiffre d'affaires total par agence :
![Diagramme à barres à améliorer avec Seaborn](https://user.oc-static.com/upload/2022/05/16/16526936921993_4.png)
Pour fixer une nouvelle palette, on utilise la fonctionset_palette
de Seaborn. Donnons à notre graphiques un aspect un peu plus pastel :sns.set_palette('pastel')
:
![Application de pastel avec la fonction set_palette à un diagramme à barres avec ville en abscisse et remboursement en ordonnée](https://user.oc-static.com/upload/2022/05/16/16526936718245_5.png)
Ou un aspect un peu plus sombre, viasns.set_palette('dark')
:
![Application de dark avec la fonction set_palette à un diagramme à barres avec ville en abscisse et remboursement en ordonnée](https://user.oc-static.com/upload/2022/05/16/16526936473948_6.png)
Il y a aussi plusieurs ensembles (ou sets, en anglais) à disposition. J’aime particulièrement le second sns.set_palette('Set2')
:
![Application d'un ensemble avec la fonction set_palette à un diagramme à barres avec ville en abscisse et remboursement en ordonnée](https://user.oc-static.com/upload/2022/05/16/16526936210194_7.png)
Les thèmes
Les thèmes correspondent à des ensembles d’aspects graphiques (sur les axes, le fond, la graduation, etc.) prédéfinis par Seaborn et utilisables à notre guise. On peut choisir un thème à appliquer via la fonctionset_theme
.
Appliquons dans un premier temps le set de base :
sns.set_theme()
![Application du set de base avec la fonction set_theme à un diagramme à barres avec ville en abscisse et remboursement en ordonnée](https://user.oc-static.com/upload/2022/05/16/16526935261457_8.png)
L’aspect est tout de suite complètement différent, n’est-ce pas ? On peut même mixer le choix du thème avec la palette de couleurs :
sns.set_theme(style='whitegrid', palette='pastel')
![Mix entre thème et palette de couleurs à un diagramme à barres avec ville en abscisse et remboursement en ordonnée](https://user.oc-static.com/upload/2022/05/16/16526935465851_9.png)
En plus de parfaitement intégrer les data frames dans le processus de génération de graphiques, Seaborn permet de créer de jolis graphiques de façon très simple. Et si un aspect ne nous plaît pas sur un thème en particulier ? Aucun problème ! Nous pouvons appliquer les différentes fonctions de Matplotlib pour pousser encore plus loin la personnalisation. Ces deux librairies forment une boîte à outils complète en termes de datavisualisation.
Que diriez-vous à présent d’appliquer vos nouvelles connaissances acquises sur Seaborn ? C’est ce que je vous propose dans l’exercice suivant.
À vous de jouer
Contexte
Habituellement, les graphiques du reporting mensuel sont réalisés avec Matplotlib. Votre ultime tâche va être d’améliorer le visuel de ces derniers avec Seaborn.
Consignes
L’objectif va être de reprendre le travail qui avait été réalisé précédemment, avec Seaborn. En plus de ces graphiques, quelques demandes additionnelles ont été glissées par votre manager, notamment pour ajouter des dimensions aux différents graphiques.
Je vous invite à vous rendre sur l’exercice.
Vérifiez votre travail
Top !! Que diriez vous de comparer à présent le travail réalisé avec la correction ?
En résumé
Seaborn est une surcouche de Matplotlib ; il est donc possible de mixer des fonctions des deux librairies sur un seul et même graphique.
Seaborn est né pour faciliter la création de visualisations à partir des data frames Pandas. Grâce à cette philosophie, on peut ajouter autant de dimensions (couleur, forme, taille, etc.) que de variables dans un data frame.
Seaborn ajoute une dimension esthétique à ses graphiques, en donnant la possibilité de changer les thèmes et/ou les palettes de couleurs.
Bravo ! Vous êtes parvenu au bout de ce cours. Mais avant de nous quitter, je vous propose de tester vos connaissances dans le quiz clôturant cette partie.