Vai al contenuto principale

Grafico a barre in Python: padroneggia tecniche base e avanzate

Crea grafici a barre di grande impatto con Matplotlib, Seaborn, Plotly, Plotnine e Pandas. Esplora i tipi di grafici a barre, dai semplici verticali e orizzontali a layout più complessi come raggruppati e impilati.
Aggiornato 29 set 2026  · 7 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

In questo articolo, ti farò fare un giro dei grafici a barre in Python usando le librerie più conosciute: Matplotlib, Seaborn, Plotly, Plotnine e Pandas. Puoi dare un colpo d’occhio alle visualizzazioni e scegliere la libreria che preferisci. Per ogni metodo, partirò dalle basi per creare semplici grafici a barre e poi passerò gradualmente alle tecniche di personalizzazione.

Cercherò di essere il più completo e chiaro possibile, ma ricorda che nell’analisi dei dati e nel data science i grafici a barre sono solo una parte del quadro. Per una visione ampia e per fare pratica con dataset reali, ottenere una certificazione molto ambita e iniziare una carriera nel settore, iscriviti oggi al nostro career track Associate Data Scientist in Python.

Modi per creare un grafico a barre in Python 

Vediamo come creare e personalizzare grafici a barre con alcune delle librerie Python più popolari. Ogni libreria offre funzionalità uniche e diversi livelli di personalizzazione.

Crea un grafico a barre con Matplotlib

Partirò da Matplotlib, una libreria di base per la creazione di grafici in Python che offre molte opzioni di personalizzazione.

Grafici a barre di base

Per iniziare con Matplotlib, devi importare le librerie necessarie. Il modulo pyplot di Matplotlib fornisce funzioni per creare grafici. In questo esempio useremo alcuni dati di esempio che mostrano quante persone preferiscono diverse librerie di visualizzazione. Qui la lista library contiene i nomi delle librerie, che compaiono come etichette sull’asse x, e la lista chosen_by contiene il numero corrispondente di appassionati, mostrato come altezze delle barre sull’asse y.

import matplotlib.pyplot as plt
# Number of preferences for different libraries
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
chosen_by = [2500, 1800, 3000, 2200]

Creare un grafico a barre verticale richiede la chiamata della funzione plt.bar() con i nomi delle librerie e i dati sulle preferenze. Scelgo il colore skyblue. Le funzioni plt.xlabel(), plt.ylabel() e plt.title() aggiungono le etichette agli assi x e y e impostano un titolo per il grafico. Infine, plt.show() visualizza il grafico.

# Vertical Bar Plot
plt.bar(library, chosen_by, color='skyblue')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
plt.show()

semplice grafico a barre in Python con Matplotlib

Allo stesso modo, puoi creare un grafico a barre orizzontale usando la funzione plt.barh(). Per questo, userò un colore verde chiaro per le barre.

# Horizontal Bar Plot
plt.barh(library, chosen_by, color='lightgreen')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
plt.show()

grafico a barre in Python con Matplotlib

Personalizzazioni avanzate

Matplotlib consente un’ampia gamma di personalizzazioni, come aggiungere annotazioni e personalizzare etichette degli assi, titoli e legende. Ad esempio, puoi aggiungere annotazioni a ciascuna barra usando la funzione plt.text(), che posiziona il testo nelle coordinate specificate.

plt.bar(library, chosen_by, color='skyblue')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')

# Adding annotations
for i, value in enumerate(chosen_by):
    plt.text(i, value + 5, str(value), ha='center')
plt.show()

grafico a barre con Matplotlib

Nel codice sopra, plt.text() viene usato per mostrare il numero di appassionati sopra ogni barra. La funzione enumerate() fornisce l’indice e il valore di ciascuna barra, così il testo è posizionato correttamente.

Grafici a barre raggruppati e impilati

Per creare grafici a barre raggruppati e impilati con Matplotlib, puoi usare parametri aggiuntivi per rappresentare più categorie, come diverse regioni o demografie. Supponiamo di avere dati sulla popolarità delle librerie di visualizzazione in diverse regioni. Per i grafici a barre raggruppati, definisci dataset separati per ogni regione e usa bar_width per controllare la spaziatura e l’allineamento delle barre, posizionando ogni gruppo affiancato per un confronto immediato.

import numpy as np

# Define library names
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']

# Number of Enthusiasts for different regions
enthusiasts_north = [2000, 1500, 2500, 2000]
enthusiasts_south = [1500, 1300, 2000, 1800]
bar_width = 0.35
x = np.arange(len(library))

# Grouped Bar Plot
plt.bar(x - bar_width/2, enthusiasts_north, bar_width, label='North Region', color='skyblue')
plt.bar(x + bar_width/2, enthusiasts_south, bar_width, label='South Region', color='lightgreen')

# Adding labels and title
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Regional Preferences for Visualization Libraries (Grouped)')
plt.xticks(x, library)
plt.legend(title='Regions')
plt.show()

grafico a barre raggruppate in Python con Matplotlib

In questo esempio, la riga x = np.arange(len(library)) crea un array di posizioni per le barre. La funzione plt.bar() viene usata due volte per creare le barre per ciascuna regione, e la funzione plt.xticks() imposta le etichette sull’asse x. La funzione plt.legend() visualizza una legenda per differenziare le regioni.

Per un grafico a barre impilate, puoi usare il parametro bottom per impilare un dataset sopra un altro. Ecco come visualizzare il numero di appassionati di diverse regioni impilati per ciascuna libreria.

# Define library names
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']

# Number of Enthusiasts for different regions
enthusiasts_north = [2000, 1500, 2500, 2000]
enthusiasts_south = [1500, 1300, 2000, 1800]
x = np.arange(len(library))

# Stacked Bar Plot
plt.bar(x, enthusiasts_north, label='North Region', color='skyblue')
plt.bar(x, enthusiasts_south, bottom=enthusiasts_north, label='South Region', color='lightcoral')

# Adding labels and title
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Regional Preferences for Visualization Libraries (Stacked)')
plt.legend()
plt.show()

grafico a barre impilate in Python con Matplotlib

In questo grafico a barre impilate, enthusiasts_south rappresenta i dati per gli appassionati della regione Sud, mentre enthusiasts_north è usato come base per la regione Nord. La funzione plt.bra() viene chiamata una volta per creare le barre per la regione Nord, poi di nuovo per impilare sopra le barre per la regione Sud.

Puoi consultare il nostro corso Introduction to Data Visualization with Matplotlib per una spiegazione più approfondita su come usare la libreria Matplotlib in Python. C’è anche il nostro Matplotlib Cheat Sheet, che scompone il processo in sei passaggi fondamentali.

Creare grafici a barre con Seaborn 

Seaborn è una libreria di visualizzazione costruita sopra Matplotlib che semplifica la creazione di grafici a barre molto gradevoli.

Grafici a barre di base

La funzione barplot() di Seaborn rende facile creare grafici a barre di base con pochissimo codice. Per prima cosa, importa la libreria Seaborn e crea un dizionario.

import seaborn as sns
data = {'Library': library, 'Chosen by': chosen_by}

Poi usa la funzione sns.barplot() per creare il grafico a barre, specificando le variabili x e y e la fonte dei dati. Qui sto usando la palette di colori viridis.

sns.barplot(x='Library', y='Chosen by', data=data, palette='viridis')
plt.title('Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

semplice grafico a barre in Python con Seaborn

Puoi decidere di non aggiungere un valore per palette e otterrai un colore uniforme nel grafico oppure, meglio ancora, assegnare un colore al grafico a barre. In questo caso userò un codice esadecimale:

sns.barplot(x='Library', y='Chosen by', data=data, color=’#5EB1FF’)
plt.title('Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

grafico a barre in Python con Seaborn

Personalizzazione avanzata

Seaborn, naturalmente, consente anche ampie opzioni di personalizzazione, incluse i colori e le annotazioni. Per esempio, puoi aggiungere annotazioni al grafico a barre in modo simile a quanto fatto in Matplotlib.

# Customized Bar Plot
sns.barplot(x='Library', y='Chosen by', data=data, palette='viridis')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')

# Adding annotations
for i, value in enumerate(chosen_by):
    plt.text(i, value + 5, str(value), ha='center')
plt.show()

grafico a barre in Python con Seaborn

In questo esempio, il parametro palette='viridis' cambia la palette di colori delle barre e la funzione plt.text() aggiunge annotazioni a ciascuna barra.

Puoi dare un’occhiata al nostro corso Introduction to Data Visualization with Seaborn per molti più dettagli. Per rendere il tuo grafico a barre Seaborn particolarmente elegante, usa la nostra guida rapida alle palette di colori Seaborn per alcune buone idee. 

Creare grafici a barre con Plotly

Passiamo a Plotly, una libreria nota per creare visualizzazioni interattive e dinamiche, inclusi i grafici a barre.

Grafici a barre di base

Creare un grafico a barre di base con Plotly comporta l’uso del modulo graph_objects. Possiamo importare il modulo necessario e creare un grafico a barre usando un colore azzurro per le barre.

import plotly.graph_objects as go
fig = go.Figure(go.Bar(x=library, y=chosen_by, marker_color='skyblue'))
fig.update_layout(title='Which Visualization Library Do People Prefer?', xaxis_title='Visualization Library', yaxis_title='Number of Enthusiasts')
fig.show()

semplice grafico a barre in Python con Plotly

Personalizzazione avanzata

Plotly offre modi per migliorare l’interattività e l’aspetto dei grafici a barre. Ad esempio, puoi aggiungere annotazioni alle barre usando la funzione fig.add_annotation().

fig = go.Figure(go.Bar(x=library, y=chosen_by, marker_color='skyblue'))
fig.update_layout(title='Which Visualization Library Do People Prefer?', xaxis_title='Visualization Library', yaxis_title='Number of Enthusiasts')

# Adding annotations
for i, value in enumerate(chosen_by):
    fig.add_annotation(x=library[i], y=value, text=str(value), showarrow=False, yshift=10)
fig.show()

grafico a barre in Python con Plotly

Grafici a barre dinamici e interattivi

Plotly può creare grafici a barre dinamici che si aggiornano in tempo reale, rendendoli ideali per dashboard. Usando Plotly Express, un’interfaccia di alto livello per Plotly, puoi creare grafici a barre interattivi con pochissimo codice.

import plotly.express as px

# Using a sample dataset from Plotly
df = px.data.gapminder().query("year == 2007")
fig = px.bar(df, x='continent', y='pop', color='continent', hover_name='country', title='Population by Continent in 2007')
fig.show()

grafico a barre interattivo in Python con Plotly

In questo esempio, la funzione px.data.gapminder() carica un dataset di esempio da Plotly. La funzione px.bar() crea un grafico a barre interattivo con le variabili x e y specificate, il colore, l’hover name e il titolo. Abbiamo un corso dettagliato qui su DataCammp se vuoi approfondire: Introduction to Data Visualization with Plotly. 

Creare grafici a barre con Plotnine

Plotnine è un’implementazione della grammar of graphics in Python, ispirata a ggplot2 in R. Consente un approccio dichiarativo alla creazione di grafici complessi combinando diversi elementi.

Grafici a barre di base

Per iniziare con Plotnine, importa le librerie necessarie e crea un DataFrame. Quindi, definisci un oggetto ggplot, aggiungi un layer geom_bar e specifica le estetiche.

from plotnine import ggplot, aes, geom_bar, labs

import pandas as pd
# Number of preferences for different libraries
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
                     'Chosen by': [2500, 1800, 3000, 2200]})

# Basic Bar Plot
ggplot(data, aes(x='Library', y='Chosen by')) + geom_bar(stat='identity', fill='skyblue') + labs(title='Which Visualization Library Do People Prefer?', x='Visualization Library', y='Number of Enthusiasts')

semplice grafico a barre in Python con Plotnine

In questo esempio, aes(x='Library', y='Chosen by') imposta le estetiche x e y per il grafico. La parte geom_bar(stat='identity', fill='skyblue') crea un grafico a barre con riempimento azzurro.

Personalizzazione avanzata

Puoi personalizzare usando l’approccio a layer di Plotnine. Puoi aggiungere annotazioni, etichette degli assi, titoli e legende.

from plotnine import ggplot, aes, geom_bar, geom_text, labs
# Creating our Pandas DataFrame
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
                     'Chosen by': [2500, 1800, 3000, 2200]})

# Basic Bar Plot with labels
(ggplot(data, aes(x='Library', y='Chosen by')) 
 + geom_bar(stat='identity', fill='skyblue')
 + geom_text(aes(label='Chosen by'), va='bottom', size=10, nudge_y=5)  # Adds labels on top of bars
 + labs(title='Which Visualization Library Do People Prefer?', x='Visualization Library', y='Number of Enthusiasts'))

grafico a barre in Python con Plotnine

Grafici a barre raggruppati e impilati 

Plotnine supporta anche grafici a barre raggruppati e impilati. Per i grafici raggruppati, devi prima definire una variabile categorica per il raggruppamento.

# Number of preferences for different libraries in different regions
data = pd.DataFrame({'Library': ['Matplotlib', 'Plotly', 'Plotnine', 'Seaborn'] * 2,
                     'Chosen by': [2000, 1500, 2500, 2000, 1500, 1300, 2000, 1800],
                     'Region': ['North', 'North', 'North', 'North', 'South', 'South', 'South', 'South']})

# Grouped Bar Plot
(ggplot(data, aes(x='Library', y='Chosen by', fill='Region'))
 + geom_bar(stat='identity', position='dodge')
 + labs(title='Regional Preferences for Visualization Libraries (Grouped)', x='Visualization Library', y='Number of Enthusiasts'))

grafico a barre raggruppate in Python con Plotnine

Per i grafici a barre impilate, puoi usare position = 'stack'.

# Stacked Bar Plot
(ggplot(data, aes(x='Library', y='Chosen by', fill='Region'))
 + geom_bar(stat='identity', position='stack')
 + labs(title='Regional Preferences for Visualization Libraries (Stacked)', x='Visualization Library', y='Number of Enthusiasts'))

grafico a barre impilate in Python con Plotnine

Nota come in questi esempi position = 'dodge' crea barre raggruppate, mentre position = 'stack' le impila.

Creare grafici a barre con Pandas

Dulcis in fundo, Pandas. Pandas offre un modo pratico per creare grafici a barre direttamente dai DataFrame, quindi è un’opzione rapida e semplice per i grafici di base.

Grafici a barre di base

Per creare un grafico a barre in Pandas, puoi usare la funzione plot.bar() su un DataFrame. 

import pandas as pd
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
                     'Chosen by': [2500, 1800, 3000, 2200]})

Poi crea un grafico a barre usando plot.bar().

# Basic Bar Plot
data.plot.bar(x='Library', y='Chosen by', color='skyblue', title='Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

semplice grafico a barre in Python con Pandas

Personalizzazione avanzata

Pandas consente la personalizzazione dei grafici a barre tramite parametri aggiuntivi e l’integrazione con Matplotlib.

# Customized Bar Plot
ax = data.plot.bar(x='Library', y='Chosen by', color='skyblue', title='Which Visualization Library Do People Prefer?')
ax.set_xlabel('Visualization Library')
ax.set_ylabel('Number of Enthusiasts')

# Adding annotations
for i in ax.containers:
    ax.bar_label(i, label_type='edge')
plt.show()

grafico a barre in Python con Pandas

In questo esempio, ax.bar_label(i, label_type='edge') aggiunge annotazioni alle barre, mostrando il numero sopra ciascuna barra.

Grafici a barre raggruppati e impilati

Creare grafici a barre raggruppati e impilati in Pandas è semplice. Per i grafici a barre raggruppati, devi rimodellare il DataFrame per avere colonne separate per ogni gruppo.

# Number of preferences for different libraries in different regions
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
                     'North Region': [2000, 1500, 2500, 2000],
                     'South Region': [1500, 1300, 2000, 1800]})

# Grouped Bar Plot
data.plot.bar(x='Library', y=['North Region', 'South Region'], title='Regional Preferences for Visualization Libraries (Grouped)')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

grafico a barre raggruppate in Python con Pandas

Per i grafici a barre impilate, usa stacked=True.

# Stacked Bar Plot
data.plot.bar(x='Library', y=['North Region', 'South Region'], stacked=True, title='Regional Preferences for Visualization Libraries (Stacked)')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

grafico a barre impilate in Python con Pandas

Best practice per progettare grafici a barre in Python efficaci

Creare grafici a barre è semplice, ma progettarli in modo efficace e informativo richiede attenzione ai dettagli. Le seguenti linee guida ti aiuteranno a creare grafici a barre che comunicano efficacemente la storia dei tuoi dati.

  • Evitare gli errori comuni: Quando progetti grafici a barre, evita di sovraccaricarli di informazioni per mantenerli chiari ed efficaci. Attieniti all’essenziale per prevenire il disordine visivo. Usa scale coerenti tra gli assi. Assicurati che l’asse inizi da zero per non fuorviare chi guarda con differenze ingigantite.
  • Scelta dei colori e degli evidenziamenti: Seleziona colori che aggiungano significato ai tuoi dati, ad esempio rosso per valori negativi o verde per quelli positivi. Mantieni uno schema di colori coerente tra grafici correlati per aiutare il lettore a seguire il filo. Usa il colore per attirare l’attenzione sugli insight importanti.
  • Ordinare le barre per una maggiore chiarezza: Organizza le barre in modo logico in base al contesto dei dati, ad esempio in ordine cronologico per dati temporali, oppure in ordine crescente/decrescente per mettere in risalto le tendenze. Raggruppa le barre correlate e usa colore o spaziatura per separare i gruppi.

Conclusione

Padroneggiare la creazione e la personalizzazione dei grafici a barre è una competenza essenziale per chiunque lavori con i dati. Seguendo le linee guida e le best practice descritte in questo articolo, puoi creare grafici a barre chiari, informativi e visivamente accattivanti che comunicano efficacemente gli insight. Questo ti permetterà di presentare i tuoi dati in modo più efficace e prendere decisioni più informate.

Se vuoi continuare ad allenare le tue abilità di visualizzazione dati in Python, dai un’occhiata al nostro corso Intro to Python for Data Science, che offre un punto di partenza per chi comincia, oppure esplora il nostro skill track Python Programming per un percorso di apprendimento completo per padroneggiare Python.


Samuel Shaibu's photo
Author
Samuel Shaibu
LinkedIn

Professionista dei dati e scrittore con esperienza, appassionato nell’aiutare aspiranti esperti nel mondo dei dati.

Domande frequenti sui grafici a barre in Python

Che cos’è un grafico a barre in Python e perché è utile?

Un grafico a barre rappresenta dati categorici con barre rettangolari, la cui lunghezza o altezza corrisponde al valore della categoria. È utile per confrontare categorie, visualizzare distribuzioni e individuare trend o outlier.

Come scelgo tra un grafico a barre verticale e uno orizzontale in Python?

Puoi usare un grafico a barre verticale per etichette brevi o facilmente leggibili, mentre scegliere un grafico a barre orizzontale per etichette più lunghe o molte categorie aiuta a evitare il disordine.

Come posso personalizzare i colori delle barre nel mio grafico?

Puoi personalizzare i colori delle barre per rendere il grafico più gradevole o per adattarlo a uno schema cromatico specifico. In Matplotlib, usa il parametro color:

plt.bar(categories, values, color=['red', 'green', 'blue'])
plt.show()

Come posso ordinare le barre nel mio grafico a barre usando Python?

Ordinare le barre può aiutare a mettere in evidenza le categorie più o meno rilevanti. Puoi ordinare i dati prima di creare il grafico:

data = {'Category': ['A', 'B', 'C'], 'Value': [4, 7, 1]}
df = pd.DataFrame(data).sort_values(by='Value', ascending=False)
plt.bar(df['Category'], df['Value'])
plt.show()

Posso creare grafici a barre interattivi in Python con Plotly?

Sì, Plotly consente di creare grafici a barre interattivi. Ecco un esempio con Plotly Express:

import plotly.express as px
data = {'Category': ['A', 'B', 'C'], 'Value': [4, 7, 1]}
fig = px.bar(data, x='Category', y='Value', title='Interactive Bar Plot')
fig.show()
Argomenti
Python
Analisi dei dati

Impara Python e i grafici a barre con DataCamp

Corso

Introduzione a Python

4 ore
7.1M
Impara le basi dell’analisi dei dati con Python in sole 4 ore. Questo corso online ti introduce all’interfaccia di Python e ai pacchetti più usati.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro