Vai al contenuto principale

Seaborn Barplot: Guida completa

Impara a creare e personalizzare i barplot di Seaborn in Python. Padroneggia le tecniche essenziali per visualizzare relazioni tra dati categorici, dai grafici di base alle funzionalità avanzate.
· 10 min leggi

Scopri con l'IA

La visualizzazione dei dati trasforma informazioni complesse in insight chiari e azionabili. I barplot di Seaborn eccellono nel presentare dati categorici tramite grafici statistici eleganti. La libreria combina la flessibilità di Matplotlib con la potenza di pandas, risultando ideale sia per analisi rapide sia per visualizzazioni pronte per la pubblicazione.

I barplot di Seaborn offrono funzionalità essenziali per l’analisi dei dati, dai confronti di base a rappresentazioni statistiche avanzate. Gestiscono attività comuni come confrontare metriche di vendita tra regioni, analizzare risposte a sondaggi e visualizzare risultati di esperimenti. 

La sintassi intuitiva della libreria e le funzioni statistiche integrate la rendono preziosa sia per chi inizia sia per professionisti esperti dei dati.

In questo articolo vedremo le basi dei barplot di Seaborn, come creare grafici di base con esempi di codice, come migliorarli tramite personalizzazioni, come implementare funzionalità avanzate e alcune applicazioni pratiche.

Per saperne di più sulla visualizzazione dei dati con Seaborn, dai un’occhiata al nostro corso Introduction to Data Visualization with Seaborn.

Basi dei barplot in Seaborn

Prima di entrare nei barplot, vediamo alcune nozioni fondamentali su Seaborn, i suoi vantaggi per i grafici a barre e come configurare l’ambiente di sviluppo.

Che cos’è Seaborn?

Seaborn è una libreria Python per la visualizzazione statistica dei dati costruita sopra Matplotlib. È specializzata nella creazione di grafici statistici informativi e gradevoli con il minimo codice. La libreria si integra strettamente con i DataFrame di pandas, risultando particolarmente efficace nei flussi di lavoro di analisi dei dati.

Fornisce un’interfaccia di alto livello per tracciare grafici accattivanti gestendo automaticamente molti dettagli di stile.

La libreria eccelle in tre aspetti chiave:

  • Si integra senza soluzione di continuità con i DataFrame di pandas, rendendo semplice la manipolazione dei dati
  • Include funzioni statistiche integrate, eliminando la necessità di calcoli separati
  • Applica di default temi e palette di colori dall’aspetto professionale

Per esempio, mentre Matplotlib richiede più righe di codice per creare una visualizzazione statistica di base, Seaborn può ottenere lo stesso risultato con una singola funzione. 

Per i grafici a barre in particolare, Seaborn aggiunge potenti funzionalità come il calcolo automatico della media, gli intervalli di confidenza e la gestione avanzata delle variabili categoriche, capacità che in puro Matplotlib richiederebbero parecchio codice aggiuntivo.

Perché usare i barplot?

I barplot presentano dati categorici tramite barre verticali o orizzontali, la cui lunghezza rappresenta un valore numerico. Sono quindi ideali per confrontare valori tra gruppi o categorie diverse. Nell’analisi dei dati, i grafici a barre aiutano a visualizzare risultati di sondaggi, quote di mercato, metriche di performance e distribuzioni di vendita.

I principali vantaggi includono:

  • Confronto chiaro delle quantità tra categorie
  • Funzionalità statistiche integrate (media, mediana, intervalli di confidenza)
  • Rappresentazione efficace di dati raggruppati
  • Elementi visivi semplici ma informativi
  • Opzioni di personalizzazione semplici per presentazioni professionali

Configurazione rapida

Per iniziare a creare barplot con Seaborn, dobbiamo configurare l’ambiente Python. Ecco come iniziare:

Per prima cosa, installiamo i pacchetti richiesti come mostrato di seguito:

pip install seaborn pandas numpy

Ora abbiamo tutti gli strumenti di visualizzazione pronti all’uso. Importiamo le librerie necessarie, come mostrato di seguito:

# For creating statistical visualizations
import seaborn as sns

# For data manipulation and analysis
import pandas as pd

# For numerical operations
import numpy as np

Possiamo migliorare l’aspetto dei grafici con alcune impostazioni di stile, come segue:

# Clean white style
sns.set_style("white")

Lo stile white rimuove le griglie e fa sì che i grafici risultino gradevoli sulla maggior parte degli schermi. Nelle prossime sezioni vedremo come creare e migliorare i barplot.

Creare barplot di base in Seaborn

Un barplot è perfetto per visualizzare le relazioni tra variabili categoriche e numeriche. Mostra stime puntuali (come media o mediana) e l’incertezza attorno a tali stime tramite barre di errore. Diamo un’occhiata alla sintassi di base di seaborn barplot.

Sintassi e parametri

La funzione sns.barplot() in Seaborn offre un modo semplice per creare grafici a barre statistici. La struttura di base della funzione .barplot() è la seguente:

sns.barplot(
    data=None,      # Your DataFrame
    x=None,         # Category variable
    y=None,         # Numeric variable
    estimator='mean',  # Statistical function to estimate
    errorbar=('ci', 95),  # Error bars type and level
    orient=None     # "v" for vertical, "h" for horizontal
)

Questi parametri ci danno il controllo su quali dati mostrare e come mostrarli. Il parametro data accetta il tuo DataFrame, mentre x e y specificano quali colonne usare per categorie e valori. estimator ti consente di scegliere la funzione statistica da applicare (media per impostazione predefinita) e errorbar controlla come visualizzare l’incertezza. Puoi anche passare dall’orientamento verticale a quello orizzontale con il parametro orient.

Ora vediamo come creare barplot efficaci usando il dataset integrato tips di Seaborn, che contiene informazioni su conti e mance nei ristoranti.

Esempio: visualizzare un dataset semplice

Esamineremo il comportamento delle mance nei diversi giorni della settimana utilizzando il dataset tips. Questo dataset contiene informazioni sui conti dei ristoranti, tra cui il giorno della settimana, l’importo totale del conto, l’importo della mancia e altre variabili.

# Import required libraries and load dataset
import seaborn as sns
tips = sns.load_dataset("tips")

# Create a basic barplot showing average tips by day
sns.barplot(data=tips, x="day", y="tip")

Output:

Il nostro codice ha creato la visualizzazione sopra, in cui ogni barra rappresenta la mancia media per un diverso giorno della settimana. L’altezza di ciascuna barra mostra il valore medio della mancia, mentre le linee nere (barre di errore) indicano l’intervallo di confidenza al 95%, dandoci informazioni sia sull’importo tipico della mancia sia sulla sua variabilità.

Possiamo anche esaminare gli schemi delle mance nei diversi momenti del pasto:

# Create a barplot showing average tips by time of day
sns.barplot(data=tips, x="time", y="tip")

Output:

Questo grafico rivela la differenza nel comportamento delle mance tra il servizio del pranzo e della cena. L’altezza di ogni barra rappresenta la mancia media per quel momento della giornata, con barre di errore che mostrano la variabilità. Questo tipo di visualizzazione rende facile individuare pattern e confrontare gruppi a colpo d’occhio.

Questi barplot di base forniscono le fondamenta per visualizzazioni più complesse. Nella sezione successiva vedremo come migliorarli con colori, raggruppamenti e altre personalizzazioni per creare visualizzazioni più informative e gradevoli.

Migliorare i barplot con personalizzazioni

Aggiungere miglioramenti visivi ai nostri barplot può rendere i dati più coinvolgenti e facili da capire. Vediamo i diversi modi per personalizzare i barplot usando il dataset tips.

Aggiungere colori ai barplot

Seaborn offre diversi modi per aggiungere colore ai tuoi barplot, rendendoli più accattivanti e informativi. Possiamo usare un singolo colore per tutte le barre o creare gruppi codificati a colori,

Il parametro color imposta un colore unico per tutte le barre, mentre palette ti permette di specificare una palette quando i dati hanno più gruppi. Seaborn include molte palette integrate che funzionano bene per diversi tipi di dati.

Possiamo creare un barplot semplice con un colore unico usando il parametro color come mostrato di seguito:

# Load the tips dataset if you haven't already
import seaborn as sns
tips = sns.load_dataset("tips")

# Single color barplot
sns.barplot(data=tips, x="day", y="tip", color="skyblue")

Output:

Possiamo creare un barplot con più colori usando il parametro palette come mostrato di seguito:

# Load the tips dataset if you haven't already
import seaborn as sns
tips = sns.load_dataset("tips")

# Using a different color palette
sns.barplot(data=tips, x="day", y="tip", palette="Set2")

Output:

Seaborn barplot con più colonne

Una delle funzionalità più potenti dei barplot di Seaborn è la possibilità di mostrare le relazioni tra più variabili usando il parametro hue. Questo crea barre raggruppate che rendono i confronti più semplici.

Confrontiamo le mance in base sia ai giorni sia agli orari dei pasti usando il parametro hue come mostrato di seguito:

# Load the tips dataset if you haven't already
import seaborn as sns
tips = sns.load_dataset("tips")

# Create a grouped barplot showing tips by day and time
sns.barplot(
    data=tips,
    x="day",
    y="tip",
    hue="time"
)

Output:

Il grafico sopra mostra due barre, una per il pranzo e una per la cena. Questo raggruppamento ci aiuta a vedere non solo come variano le mance per giorno, ma anche come differiscono tra i momenti del pasto.

Creare un barplot impilato in Seaborn

I barplot impilati sono eccellenti per mostrare la composizione di diverse categorie. Anche se Seaborn non ha una funzione diretta per i barplot impilati, possiamo combinarlo con matplotlib per creare visualizzazioni impilate efficaci. 

Questo approccio sfrutta la funzionalità statistica di Seaborn insieme alle capacità di impilamento di matplotlib. Come esempio, nel dataset tips, vediamo come si distribuiscono le mance tra fumatori e non fumatori nei diversi giorni.

Iniziamo importando le librerie necessarie per la nostra visualizzazione:

# Import required libraries
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

Ora carichiamo il nostro dataset con le informazioni sulle mance al ristorante:

# Load the tips dataset
tips = sns.load_dataset("tips")

Creeremo una figura con dimensioni adeguate alla nostra visualizzazione:

# Create figure and axis
plt.figure(figsize=(10, 4))

Successivamente calcoleremo le mance medie per fumatori e non fumatori nei diversi giorni:

# Calculate values for stacking
# Filter smokers, group by day and get mean tips
smoker_means = tips[tips['smoker']=='Yes'].groupby('day')['tip'].mean()
 
# Filter non-smokers, group by day and get mean tips     
non_smoker_means = tips[tips['smoker']=='No'].groupby('day')['tip'].mean()

Poi imposteremo i parametri di base per le nostre barre impilate come mostrato di seguito:

# Plot the stacked bars using matplotlib
days = smoker_means.index
width = 0.8

Ora creeremo lo strato inferiore delle barre impilate per i non fumatori:

# Create bottom bars (non-smokers)
plt.bar(days, non_smoker_means, width, label='Non-smoker', color=sns.color_palette()[0])

Aggiungeremo lo strato superiore per le mance dei fumatori:

# Create top bars (smokers)
plt.bar(days, smoker_means, width, bottom=non_smoker_means, 
        label='Smoker', color=sns.color_palette()[1])

Impostiamo uno stile pulito senza griglie usando lo styling di seaborn:

# Add Seaborn styling
sns.set_style("white")

Infine, mostreremo il nostro barplot impilato completo:

# Show the plot
plt.show()

Output:

Il grafico risultante mostra le mance medie dei fumatori impilate sopra quelle dei non fumatori per ciascun giorno, rendendo facile confrontare sia il totale delle mance sia il contributo di ciascun gruppo.

Questa soluzione alternativa ci permette di:

  • Mantenere lo stile visivo attraente di Seaborn
  • Impilare le barre per mostrare la composizione
  • Mantenere la natura statistica della visualizzazione
  • Usare le palette di Seaborn per coerenza

Funzionalità avanzate e suggerimenti

Ora che abbiamo visto le basi e le personalizzazioni, vediamo alcune funzionalità avanzate che possono rendere i nostri barplot più informativi e professionali. Continueremo a usare il dataset tips per illustrare queste tecniche.

Annotare i barplot

Aggiungere etichette di valore alle barre può rendere le visualizzazioni più precise e informative. Creiamo un barplot che mostri i valori esatti delle mance sopra ogni barra.

Per prima cosa, importiamo le librerie e prepariamo i dati:

# Import required libraries
import seaborn as sns
import matplotlib.pyplot as plt

# Load and prepare the tips dataset
tips = sns.load_dataset("tips")

Creiamo il nostro barplot con valori statistici:

# Create the basic barplot
ax = sns.barplot(data=tips, x="day", y="tip”, errorbar=None)    # Create barplot and store the axes object for annotations

Successivamente, aggiungeremo le etichette di valore in cima a ciascuna barra, come mostrato di seguito:

# Get the height of each bar
bars = ax.containers[0]                           # Get the bar container object
heights = [bar.get_height() for bar in bars]      # Extract height of each bar

# Add text annotations on top of each bar
for bar, height in zip(bars, heights):            # Loop through bars and heights together
    ax.text(
        bar.get_x() + bar.get_width()/2.,        # X position (center of bar)
        height,                                   # Y position (top of bar)
        f'${height:.2f}',                        # Text (format as currency)
        ha='center',                             # Horizontal alignment
        va='bottom'                              # Vertical alignment
    )

Output:

Gestire assi e scale

Quando crei barplot, regolare gli assi aiuta a rendere i dati più leggibili e incisivi. Vediamo come personalizzare limiti, etichette e tacche usando le funzioni di Seaborn.

Per prima cosa, importiamo la libreria e carichiamo il dataset necessario per la nostra visualizzazione:

# Import required libraries
import seaborn as sns

# Load and prepare the tips dataset
tips = sns.load_dataset("tips")

Possiamo creare un barplot con etichette personalizzate e ordine dei giorni. Il parametro order ci permette di specificare esattamente come vogliamo disporre i giorni sull’asse x:

# Create barplot with axis labels
ax = sns.barplot(
    data=tips,
    x="day",
    y="tip",
    order=['Thur', 'Sat', ‘Fri', 'Sun']     # Set custom order for days
)

Per rendere il grafico più informativo, possiamo aggiungere etichette descrittive per entrambi gli assi usando il metodo set:

# Set descriptive axis labels
ax.set(
    xlabel='Day of Week',
    ylabel='Average Tip ($)'
)

Per rifinire la visualizzazione, possiamo impostare limiti e tacche specifici. Il parametro ylim controlla l’intervallo dell’asse y, mentre xticks e yticks ci permettono di definire esattamente dove far apparire le tacche:

# Customize axis limits and ticks
ax.set(
    ylim=(0, 5),                            # Set y-axis range from 0 to 5
    xticks=range(4),                        # Set x-axis tick positions
    yticks=[0, 1, 2, 3, 4, 5]              # Set specific y-axis tick values
)

Per applicare tutte queste modifiche al grafico, dobbiamo eseguirle insieme e non una per volta. Il codice completo è mostrato di seguito:

# Import required libraries
import seaborn as sns

# Load and prepare the tips dataset
tips = sns.load_dataset("tips")

# Create barplot with axis labels
ax = sns.barplot(
   data=tips,
   x="day",
   y="tip",
   order=['Thur', 'Sat', 'Fri', 'Sun']     # Set custom order for days
)

# Set descriptive axis labels
ax.set(
   xlabel='Day of Week',
   ylabel='Average Tip ($)'
)

# Customize axis limits and ticks
ax.set(
   ylim=(0, 5),                            # Set y-axis range from 0 to 5
   xticks=range(4),                        # Set x-axis tick positions
   yticks=[0, 1, 2, 3, 4, 5]              # Set specific y-axis tick values
)

Output:

Il grafico risultante mostra le mance per giorno con etichette chiare, scale appropriate e tacche ben organizzate, rendendo i dati facili da leggere e interpretare.

Incorporare le barre di errore

Le barre di errore aiutano a visualizzare l’incertezza o la variabilità nei dati. Seaborn offre diverse opzioni per aggiungere barre di errore ai barplot, inclusi intervalli di confidenza e deviazione standard.

Per prima cosa, importiamo la libreria e carichiamo il dataset necessario per la visualizzazione:

# Import required libraries
import seaborn as sns

# Load and prepare the tips dataset
tips = sns.load_dataset("tips")

Per impostazione predefinita, Seaborn mostra intervalli di confidenza al 95%. Possiamo modificarlo usando il parametro 'errorbar' per mostrare diversi tipi di stime statistiche:

# Create barplot with confidence intervals
ax = sns.barplot(
    data=tips,
    x="day",
    y="tip",
    errorbar="ci",                          # Show confidence interval
    capsize=0.1                            # Add small caps to error bars
)

Output:

Possiamo anche mostrare la deviazione standard invece degli intervalli di confidenza, utile per visualizzare la dispersione dei dati:

# Switch to standard deviation
ax = sns.barplot(
    data=tips,
    x="day",
    y="tip",
    errorbar="sd",                          # Show standard deviation
    capsize=0.1                            # Add small caps to error bars
)

Output:

A volte potremmo voler rimuovere del tutto le barre di errore per un aspetto più pulito:

# Create barplot without error bars
ax = sns.barplot(
    data=tips,
    x="day",
    y="tip",
    errorbar=None                           # Remove error bars
)

Output:

I grafici risultanti mostrano come diversi tipi di barre di errore possano aiutarci a comprendere la variabilità delle mance nei diversi giorni della settimana.

Applicazioni pratiche dei barplot di Seaborn

I barplot sono strumenti versatili nella visualizzazione dei dati, particolarmente utili quando devi confrontare valori tra categorie diverse o analizzare più variabili contemporaneamente. Vediamo due applicazioni comuni in cui i barplot di Seaborn eccellono.

Visualizzare tendenze nei dati categorici

I barplot di Seaborn sono ottimi per rivelare pattern nei dati categorici, soprattutto quando si analizzano metriche tra gruppi diversi. Mostrando sia la tendenza centrale sia l’incertezza, i barplot aiutano a identificare differenze significative tra categorie. 

Questo li rende ideali per analizzare il comportamento dei clienti, le performance dei prodotti o le risposte ai sondaggi quando devi confrontare valori tra gruppi distinti.

Confrontare più variabili

Quando l’analisi coinvolge più fattori, i barplot di Seaborn possono evidenziare relazioni complesse nei nostri dati. Usando funzionalità come il raggruppamento (hue) o l’impilamento si possono confrontare più variabili contemporaneamente, facilitando l’individuazione di pattern e interazioni tra diversi aspetti dei dati.

Conclusione 

I barplot di Seaborn trovano il giusto equilibrio tra semplicità e profondità statistica. La sintassi intuitiva della libreria, combinata con robuste funzionalità statistiche, la rende uno strumento essenziale per la visualizzazione dei dati. Dai confronti tra categorie di base alle visualizzazioni raggruppate avanzate, i barplot aiutano a scoprire e comunicare efficacemente i pattern nei dati.

Pronto a fare un salto di qualità nelle tue competenze di data visualization? Ecco cosa esplorare dopo:

Vuoi portare le tue skill su Seaborn al livello successivo? Iscriviti al corso Intermediate Data Visualization with Seaborn.

Seaborn Barplot Domande frequenti

A cosa serve un barplot di Seaborn?

Il barplot di Seaborn visualizza la relazione tra una variabile categorica e una numerica mostrando stime statistiche con barre di errore.

Posso cambiare il colore dei barplot di Seaborn?

Sì, puoi personalizzare i colori usando il parametro color per un colore singolo o palette per più schemi di colore.

Posso creare barplot raggruppati in Seaborn?

Sì, usa il parametro hue per creare barre raggruppate basate su una variabile categorica.

Come aggiungo le barre di errore al mio barplot di Seaborn?

Usa il parametro errorbar, ad esempio errorbar='ci' per gli intervalli di confidenza o errorbar='sd' per la deviazione standard.

Seaborn può creare grafici a barre orizzontali?

Sì, imposta orient='h' nella tua funzione barplot per creare barre orizzontali invece che verticali.

Autore

Rajesh Kumar

Sono una content writer specializzata in data science. Amo creare contenuti su temi di IA/ML/DS. Esploro anche nuovi strumenti di IA e ne scrivo.

Argomenti

Correlato