Comment créer des graphiques violon Seaborn de style cyberpunk avec un code Python minimal

Créer des graphiques violon Seaborn cyberpunk en Python avec peu de code.

Un tutoriel simple sur la façon d’améliorer facilement vos graphiques en violon Seaborn

Graphique en violon Seaborn cyberpunk montrant les variations de densité pour différentes lithologies rencontrées dans un puits. Image de l'auteur.

Les graphiques en violon sont une visualisation courante des données qui combine la puissance d’un boxplot et d’un graphique de densité en un seul graphique. Cela nous permet de visualiser plus d’informations dans une seule figure. Par exemple, nous pouvons voir les statistiques de base du boxplot, identifier les éventuels valeurs aberrantes et visualiser la distribution de ces données. Cela peut nous aider à comprendre si les données sont biaisées ou contiennent des distributions multimodales.

Dans ma dernière série d’articles, j’ai exploré des moyens d’améliorer et d’enrichir les figures matplotlib de base en utilisant différents thèmes, notamment un style cyberpunk. Ce style donne une apparence futuriste néon aux graphiques et ne nécessite que quelques lignes de code pour l’appliquer aux figures matplotlib et seaborn.

Si vous voulez en savoir plus, vous pouvez voir comment je l’ai appliqué aux figures matplotlib dans l’article ci-dessous.

Cyberpunking Your Matplotlib Figures

Taking Your Matplotlib Figures from Boring to Interesting with a Few Lines of Code

towardsdatascience.com

Dans ce court tutoriel, nous allons prendre le graphique en violon seaborn de base et le cyberpunker.

Importation de bibliothèques et chargement de données

Nous allons commencer par importer les bibliothèques avec lesquelles nous allons travailler dans ce tutoriel.

Il s’agit de matplotlib et seaborn pour visualiser nos données, pandas pour charger et stocker nos données, et mplcyberpunk pour appliquer le thème cyberpunk au graphique seaborn.

import matplotlib.pyplot as pltimport pandas as pdimport mplcyberpunkimport seaborn as sns

Après avoir importé les bibliothèques requises, la prochaine étape consiste à charger nos données. Cela se fait à l’aide de la fonction read_csv() de pandas en passant l’emplacement du fichier de données.

Les données que nous allons utiliser sont un sous-ensemble de la compétition de machine learning combinée XEEK et Force 2020 qui visait à prédire la lithologie à partir de mesures de diagraphie. Plus de détails sur cet ensemble de données peuvent être trouvés à la fin de l’article.

df = pd.read_csv('data/Xeek_Well_15-9-15.csv')
Dataframe pandas contenant les mesures de diagraphie pour le puits 15/19-15. Image de l'auteur.

Lorsque nous visualisons le dataframe ( df ), nous obtenons l’image ci-dessus. Nous pouvons voir que nous avons les données d’un seul puits s’étendant de 485m à 3200m.

Création des graphiques en violon Seaborn

À partir du dataframe, nous allons utiliser deux colonnes. La colonne RHOB, qui contient les mesures de densité en vrac, et la colonne LITH, qui contient les descriptions lithologiques.

Nous pouvons appeler le code suivant pour créer le graphique en violon de base.

Nous définissons d’abord la taille de la figure à 10 x 5, ce qui nous donnera une figure de taille décente à observer, puis nous appelons sns.violinplot() et passons les paramètres requis.

plt.figure(figsize=(10,5))sns.violinplot(x='LITH', y='RHOB', data=df)

Lorsque nous exécutons le code ci-dessus, nous obtenons le graphique suivant.

Diagramme en violon seaborn de base montrant la variation de la densité en vrac (RHOB) avec chaque lithologie. Image de l'auteur.

À première vue, le graphique retourné semble bon et utilisable, cependant, nous pouvons améliorer le style en utilisant la bibliothèque mplcyberpunk.

Application du style Cyberpunk aux figures Seaborn

Pour appliquer le style cyberpunk à notre graphique, tout ce que nous avons à faire est d’ajouter une ligne supplémentaire au code. Cette ligne de code utilise une instruction with et appelle ensuite plt.style.context, ce qui nous permet d’appliquer le style uniquement au graphique appelé sous cette ligne plutôt que de changer le style global pour tous les graphiques.

with plt.style.context('cyberpunk'):    plt.figure(figsize=(10,5))    sns.violinplot(x='LITH', y='RHOB', data=df)

Lorsque nous exécutons le code ci-dessus, nous obtiendrons le diagramme en violon suivant qui a la plupart du thème cyberpunk appliqué.

Diagramme en violon Seaborn après l'application du thème mplcyberpunk. Image de l'auteur.

Un des processus que la bibliothèque mplcyberpunk devrait effectuer est de changer les couleurs des violons. Cependant, dans notre cas, cela n’a pas été appliqué. Mais cela peut être facilement corrigé.

Nous devons créer une liste des couleurs cyberpunk pour le corriger. Ces couleurs ont été extraites du code source de mplcyberpunk, mais elles peuvent être modifiées en toute couleur que vous voulez. N’oubliez pas que si vous optez pour un style cyberpunk, nous utiliserions probablement des couleurs néon vives.

En plus de créer une liste de couleurs, nous pouvons également trier l’ordre des violons de sorte qu’ils soient en ordre alphabétique. C’est une étape facultative, mais une bonne, surtout lors de la comparaison de plusieurs ensembles de données avec les mêmes catégories.

my_pal=['#08F7FE', '#FE53BB', '#F5D300', '#00ff41', 'r', '#9467bd', '#de014f']lith_order = df['LITH'].sort_values().unique()

Pour appliquer les couleurs aux fichiers, nous pouvons passer my_pal dans le paramètre de palette pour le diagramme en violon.

Cependant, pour appliquer la même couleur aux bords/lignes des graphiques, nous devons accéder aux collections, qui stockent une liste de toutes les parties du diagramme en violon.

Dans cette liste, chaque deux éléments consécutifs correspondent à un violon : le premier est le corps du violon et le second est le mini graphique en boîte.

Par conséquent, nous devons tenir compte de cela dans notre boucle for.

with plt.style.context('cyberpunk'):    plt.figure(figsize=(15,10))    g=sns.violinplot(x='LITH', y='RHOB', data=df, palette=my_pal,                     order=lith_order)        for i in range(len(g.collections)//2):          # divide by 2 because collections include both violin         # bodies and the mini box plots        g.collections[i*2].set_edgecolor(my_pal[i])        g.collections[i*2].set_alpha(0.8)

Lorsque nous exécutons le code ci-dessus, nous obtenons le diagramme en violon suivant avec nos violons cyberpunk.

Diagramme en violon seaborn cyberpunké pour différentes lithologies rencontrées dans un puits. Image de l'auteur.

Maintenant que nous sommes capables de contrôler les lignes et les couleurs de notre graphique, nous pouvons apporter quelques ajustements finaux en modifiant l’alpha du remplissage pour le rendre légèrement plus lumineux et en augmentant la taille de nos étiquettes d’axe x et y.

with plt.style.context('cyberpunk'):    plt.figure(figsize=(15,10))        g=sns.violinplot(x='LITH', y='RHOB', data=df, palette=my_pal,                     order=lith_order)    for i in range(len(g.collections)//2):        g.collections[i*2].set_edgecolor(my_pal[i])        g.collections[i*2].set_alpha(0.9)        g.set_ylabel('RHOB\n\n', fontsize=16)    g.set_xlabel('\n\nLithologie', fontsize=16)
Violonplot Seaborn cyberpunké pour différentes lithologies rencontrées dans un puits. Image de l'auteur.

Résumé

La bibliothèque mplcyberpunk offre un moyen rapide et facile de transformer instantanément vos graphiques du style par défaut à quelque chose qui a une apparence futuriste.

Lors de la création de graphiques comme celui-ci, il est toujours important de considérer votre public et de vous assurer que le message et l’histoire que vous essayez de transmettre sont toujours clairs.

Jeu de données utilisé dans ce tutoriel

Sous-ensemble d’un ensemble de données d’entraînement utilisé dans le cadre d’une compétition de Machine Learning organisée par Xeek et FORCE 2020 (Bormann et al., 2020). Cet ensemble de données est sous licence Creative Commons Attribution 4.0 International.

L’ensemble de données complet peut être consulté à l’adresse suivante : https://doi.org/10.5281/zenodo.4351155.

Merci d’avoir lu. Avant de partir, vous devriez certainement vous abonner à mon contenu et recevoir mes articles dans votre boîte de réception. Vous pouvez le faire ici !

Deuxièmement, vous pouvez obtenir l’expérience IPGirl complète et soutenir des milliers d’autres écrivains et moi-même en vous inscrivant à une adhésion. Cela ne vous coûte que 5 dollars par mois et vous avez un accès complet à tous les fantastiques articles IPGirl, ainsi que la possibilité de gagner de l’argent avec votre écriture.

Si vous vous inscrivez en utilisant mon lien, vous me soutiendrez directement avec une partie de votre frais, et cela ne vous coûtera pas plus cher. Si vous le faites, merci infiniment pour votre soutien.

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Visualisations des embeddings

J'ai soumis mon premier article sur l'IA en 1990 à une petite conférence locale - la Midwest Artificial Intelligence ...

Science des données

Qui sont les scientifiques de données citoyens et que font-ils ?

Introduction Dans le monde d’aujourd’hui axé sur les données, le rôle des scientifiques des données est d...

Science des données

Apprentissage automatique | Vincent Warmerdam Calmcode, Explosion, Science des données

Bienvenue à nouveau dans Learning from Machine Learning, une série d'interviews qui explore le monde fascinant de l'a...

Science des données

Un autre modèle révolutionnaire à grande échelle de Meta AI - DINOv2 pour l'extraction de caractéristiques d'image.

Mete AI présente une nouvelle version du modèle d'extraction de fonctionnalités d'image appelé DINOv2 qui extrait aut...

AI

Rôle des contrats de données dans le pipeline de données

Qu’est-ce que les contrats de données ? Un contrat de données est un accord ou un ensemble de règles définissan...

Science des données

Pour vraiment apprendre un nouveau sujet, prenez votre temps.

Dans une culture qui valorise la vitesse au-dessus de presque tout le reste - allez vite et cassez des choses - il es...