Come Creare Grafici a Violino di Seaborn in Stile Cyberpunk con un Codice Python Minimale
Create Cyberpunk Style Seaborn Violin Plots with Minimal Python Code.
Un semplice tutorial su come migliorare facilmente i tuoi grafici a violino Seaborn
I grafici a violino sono una comune visualizzazione dei dati che combina la potenza di un boxplot e un grafico di densità in un singolo grafico. Ciò ci consente di visualizzare più informazioni all’interno di una singola figura. Ad esempio, possiamo visualizzare le statistiche di base dal boxplot, identificare possibili valori anomali e visualizzare la distribuzione di quei dati. Ciò può aiutarci a capire se i dati sono distorti o contengono distribuzioni multimodali.
All’interno della mia ultima serie di articoli, ho esplorato modi per migliorare e potenziare le figure di base di matplotlib utilizzando vari temi, tra cui uno stile cyberpunk. Questo stile fornisce un aspetto futuristico e neon ai grafici e richiede solo un paio di righe di codice per essere applicato alle figure di matplotlib e seaborn.
Se vuoi saperne di più, puoi vedere come l’ho applicato alle figure di matplotlib nel seguente articolo.
Cyberpunking Your Matplotlib Figures
Portare le tue figure di Matplotlib da noiose ad interessanti con poche righe di codice
towardsdatascience.com
- Cos’è la gestione dei dati e perché è importante?
- Perché il testing delle ipotesi dovrebbe prendere spunto da Amleto
- Green AI Metodi e Soluzioni per Migliorare la Sostenibilità dell’IA
In questo breve tutorial, prenderemo il grafico a violino Seaborn di base e lo cyberpunkeremo.
Importazione delle librerie e caricamento dei dati
Inizieremo importando le librerie con cui lavoreremo in questo tutorial.
Queste sono matplotlib e seaborn per visualizzare i nostri dati, pandas per caricare e memorizzare i nostri dati e mplcyberpunk per applicare il tema cyberpunk alla grafico seaborn.
import matplotlib.pyplot as pltimport pandas as pdimport mplcyberpunkimport seaborn as sns
Dopo aver importato le librerie necessarie, il passo successivo che dobbiamo eseguire è caricare i nostri dati. Ciò viene fatto utilizzando la funzione read_csv()
di pandas e passando la posizione del file di dati.
I dati che utilizzeremo sono un sottoinsieme della competizione combinata di Machine Learning XEEK e Force 2020 che aveva lo scopo di prevedere la litologia dalle misurazioni del registro di pozzo. Ulteriori dettagli di questo dataset possono essere trovati alla fine dell’articolo.
df = pd.read_csv('data/Xeek_Well_15-9-15.csv')
Quando visualizziamo il dataframe (df
) otteniamo l’immagine sopra. Possiamo vedere che abbiamo i dati di un singolo pozzo che si estendono da 485m a 3200m.
Creazione dei grafici a violino Seaborn
Dal dataframe, utilizzeremo due colonne. La colonna RHOB, che contiene le misurazioni della densità volumica, e la colonna LITH, che contiene le descrizioni litologiche.
Possiamo chiamare il seguente codice per creare il grafico a violino di base.
Prima impostiamo la dimensione della figura su 10 x 5, che ci darà una figura di dimensioni decenti da visualizzare, e poi chiamiamo sns.violinplot()
e passiamo i parametri richiesti.
plt.figure(figsize=(10,5))sns.violinplot(x='LITH', y='RHOB', data=df)
Quando eseguiamo il codice sopra, otteniamo il seguente grafico.
A prima vista, il grafico restituito sembra buono e utilizzabile, tuttavia, possiamo migliorare lo stile utilizzando la libreria mplcyberpunk
.
Applicazione dello stile cyberpunk alle figure di Seaborn
Per applicare lo stile cyberpunk al nostro grafico, tutto ciò che dobbiamo fare è aggiungere una linea extra al codice. Questa riga di codice utilizza uno statement with
e poi chiama plt.style.context
e ci consente di applicare lo stile solo al grafico che viene chiamato sotto questa linea anziché cambiare lo stile globale per tutti i grafici.
with plt.style.context('cyberpunk'): plt.figure(figsize=(10,5)) sns.violinplot(x='LITH', y='RHOB', data=df)
Quando eseguiamo il codice sopra, otteniamo il seguente grafico a violino che ha applicato quasi tutto il tema cyberpunk.
Uno dei processi che dovrebbe fare la libreria mplcyberpunk è cambiare i colori dei violini. Tuttavia, nel nostro caso, questo non è stato applicato. Ma può essere facilmente corretto.
Dobbiamo creare una lista dei colori cyberpunk per correggerlo. Questi colori sono stati estratti dal codice sorgente mplcyberpunk, ma possono essere cambiati con qualsiasi colore desideri. Ricorda, se stai cercando uno stile cyberpunk, probabilmente userai colori neon brillanti.
Oltre alla creazione di una lista di colori, possiamo anche ordinare l’ordine dei violini in modo che siano in ordine alfabetico. Questo è un passaggio facoltativo, ma buono, soprattutto quando si confrontano più set di dati con le stesse categorie.
my_pal=['#08F7FE', '#FE53BB', '#F5D300', '#00ff41', 'r', '#9467bd', '#de014f']lith_order = df['LITH'].sort_values().unique()
Per applicare i colori ai file, possiamo passare my_pal
al parametro della palette per il grafico a violino.
Tuttavia, per applicare lo stesso colore ai bordi/linee dei grafici, dobbiamo accedere alle collections, che memorizzano un elenco di tutte le parti del grafico a violino.
In questo elenco, ogni due elementi consecutivi corrispondono a un violino: il primo è il corpo del violino e il secondo è il mini box plot.
Quindi dobbiamo tenere conto di questo nel nostro ciclo 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)
Quando eseguiamo il codice sopra, otteniamo il seguente grafico con i nostri violini cyberpunk.
Adesso che siamo in grado di controllare le linee e i colori del nostro grafico, possiamo apportare alcune modifiche finali cambiando l’alpha di riempimento per renderlo leggermente più luminoso e aumentando le dimensioni delle etichette dell’asse x e 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\nLithology', fontsize=16)
Sommario
La libreria mplcyberpunk fornisce un modo rapido e facile per trasformare istantaneamente i tuoi grafici dallo stile predefinito a qualcosa che ha un aspetto futuristico.
Nella creazione di grafici come questo, è sempre importante considerare il tuo pubblico e assicurarsi che il messaggio e la storia che stai cercando di trasmettere siano ancora chiari.
Dataset usato in questo tutorial
Sottoinsieme di un set di dati di training utilizzato come parte di una competizione di Machine Learning organizzata da Xeek e FORCE 2020 (Bormann et al., 2020). Questo dataset è concesso in licenza con Creative Commons Attribution 4.0 International.
Il set di dati completo può essere acceduto al seguente link: https://doi.org/10.5281/zenodo.4351155.
Grazie per aver letto. Prima di andare, dovresti assolutamente iscriverti al mio contenuto e ricevere i miei articoli nella tua casella di posta. Puoi farlo qui!
In secondo luogo, puoi ottenere l’esperienza completa di Nisoo e supportare migliaia di altri scrittori e me registrandoti per una membership. Costa solo $5 al mese e hai accesso completo a tutti i fantastici articoli di Nisoo, nonché la possibilità di guadagnare denaro con la tua scrittura.
Se ti registri utilizzando il mio link, mi supporterai direttamente con una parte della tua quota e non ti costerà di più. Se lo fai, grazie mille per il tuo supporto.