Vai al contenuto principale

Come creare un istogramma con Plotly

Scopri come implementare istogrammi in Python usando la libreria di visualizzazione dati Plotly.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Gli istogrammi sono rappresentazioni grafiche molto usate, in cui i punti dati sono organizzati in intervalli specifici. Si vedono spesso in statistica per mostrare la quantità di un certo tipo di variabile che ricade entro un determinato intervallo. Ad esempio, il tuo vecchio prof di matematica potrebbe aver usato un istogramma per visualizzare il numero di voti ottenuti da tutte le persone della tua classe. 

Istogramma che mostra la distribuzione dei voti

Figura 1: Un esempio di istogramma che mostra la distribuzione dei voti di una classe. 

[Fonte: Esempio di istogramma con Matplotlib] 

Le loro barre di altezze variabili ricordano i grafici a barre, con la differenza che gli istogrammi servono per visualizzare dati quantitativi invece che categoriali, come avviene nei grafici a barre. 

In genere, i dati numerici visualizzati negli istogrammi sono continui, ovvero assumono infiniti valori. Provare a tracciare i valori di variabili continue è spesso poco pratico. Gli istogrammi risolvono il problema raggruppando più punti dati in intervalli logici (detti bin), rendendone possibile la visualizzazione. 

In questo tutorial vedremo come implementare istogrammi in Python utilizzando la libreria di visualizzazione dati Plotly. Daremo anche un'occhiata a diversi modi per personalizzare il tuo istogramma Plotly e al perché la data visualization è importante fin dall'inizio. 

Dai un'occhiata a questo workbook DataLab per seguire il codice del tutorial. 

L'importanza della data visualization nell'analisi dei dati

Nessuna azienda può dire di non trarre beneficio da una migliore comprensione dei propri dati. Il ruolo dell'analisi dei dati è aiutare le aziende a ottimizzare le performance e migliorare i risultati; questa disciplina si estende a tutti i campi in cui esistono dati, poiché gli insight sono generalmente considerati un vantaggio competitivo.   

Le visualizzazioni dei dati sono le rappresentazioni grafiche che gli analisti usano per rappresentare informazioni e dati. Il loro scopo è riassumere i dati in un formato di facile comprensione, mettendo in evidenza gli elementi chiave per chi legge. 

In altre parole, le aziende usano la data visualization per identificare rapidamente trend nei dati che altrimenti sarebbero difficili da cogliere senza supporto visivo. Le rappresentazioni grafiche rendono la comunicazione delle informazioni semplice, universale, veloce ed efficace. 

Introduzione a Plotly

Plotly è una libreria interattiva e open source per la visualizzazione dei dati in Python e R, scritta in JavaScript. In questo articolo ci concentreremo su Plotly per Python, talvolta indicato come “plotly.py”, per distinguerlo dalla controparte JavaScript. 

Suggerimento: segui i corsi Introduzione alla data visualization con Plotly in Python o Data visualization interattiva con Plotly in R per prendere confidenza con Plotly.   

Molti utenti di Plotly raccontano di essere rimasti inizialmente “colpiti” dall'estetica moderna che la libreria permette di ottenere con facilità. Plotly per Python consente di creare visualizzazioni web attraenti e interattive che possono essere: 

  • visualizzate nei notebook Jupyter, 
  • salvate in file HTML standalone, 
  • servite come parte di applicazioni web costruite interamente in Python usando Dash.

Un altro punto di forza di Plotly è l'ampia gamma di tipi di grafico disponibili. La libreria supporta oltre 40 grafici unici per diversi casi d'uso, tra cui statistica, finanza, geografia, scienza e grafici tridimensionali. 

Esportare le visualizzazioni create con Plotly è semplice grazie alla profonda integrazione della libreria con Kaleido, un'utilità per l'esportazione di immagini. C'è anche un ampio supporto per contesti non web, inclusi editor desktop (ad es. Spyder, PyCharm, ecc.) e la pubblicazione di documenti statici (ad es. esportazione di notebook Jupyter in PDF). 

Installare plotly.py è piuttosto semplice; si può installare con pip: 

pip install plotly>=5.11.0, <5.12.0

Oppure con Conda: 

conda install -c plotly plotly>=5.11.0, <5.12.0

Nota: È consigliabile installare le librerie in un ambiente virtuale per mantenere separate le dipendenze dei diversi progetti. Puoi anche iniziare con un workbook DataLab - un IDE per Data Science in Python e R nel cloud. 

Usare DataLab

DataLab è un IDE (Integrated Development Environment) online che consente di scrivere codice, analizzare dati da soli o in gruppo e condividere insight. In altre parole, puoi pensare a DataLab come a una sorta di Google Docs concepito appositamente per la data science; scopri di più su come funziona nel nostro articolo Usare DataLab in classe.

Per questo compito, dobbiamo creare un workbook a partire da un dataset. Per fortuna, DataCamp mette a disposizione una raccolta ricca e in crescita di dataset interessanti da analizzare. Quando creiamo un workbook da un dataset, l'ambiente contiene tutti i dati preconfigurati e una breve descrizione, così puoi metterti subito all'opera.   

I passaggi per creare un workbook usando un dataset di DataCamp sono i seguenti: 

  • Dall'app DataLab, seleziona "Datasets" nella sidebar.
  • Seleziona un dataset che ti interessa. Viene visualizzata una finestra di dialogo che fornisce un preview del dataset selezionato, incluso un dizionario dei dati e un link alla fonte, un'eventuale scelta della lingua (Python o R) e una panoramica delle pubblicazioni create da altri utenti con quel dataset.
  • Seleziona Create workbook.

crea un DataCamp Workspace

Figura 2: Una GIF che mostra i passaggi per creare un workbook da un dataset.

Nota: Consulta Creare un istogramma Plotly con i dati delle Olimpiadi per seguire il codice.

Useremo il dataset Olympics Data della raccolta interna di DataCamp. Secondo la descrizione, si tratta di un dataset storico sui Giochi Olimpici moderni, da Atene 1896 a Rio 2016. Ogni riga rappresenta un singolo atleta (271116 istanze) che ha partecipato a un evento olimpico e l'eventuale medaglia vinta.

Le colonne sono le seguenti: 

Colonna

Spiegazione

id

Numero univoco per ogni atleta

name

Nome dell'atleta

sex

M o F

age

Età dell'atleta

height

In centimetri

weight

In chilogrammi

team

Nome della squadra

noc

National Olympic Committee 3

games

Anno e stagione

year

Intero

season

Summer o Winter

city

Città ospitante

sport

Sport

event

Evento

medal

Gold, Silver, Bronze o NA

In base a quanto visto, le colonne da cui possiamo aspettarci di costruire un istogramma sono: age, height, weight e year. Questo perché gli istogrammi si costruiscono con valori numerici continui: servono a rappresentare la distribuzione di dati numerici, in cui i dati vengono suddivisi in bin e si mostra il conteggio per ciascun bin. 

Useremo la colonna age per creare il nostro istogramma. 

Creare un istogramma Plotly

Creare un istogramma in Python con Plotly è piuttosto semplice; possiamo usare Plotly Express, un'interfaccia di alto livello e facile da usare…

import plotly.express as px

# Create a histogram
fig = px.histogram(olympic_data.age, x="age",
                  title="Distribution of Athletes age")
fig.show()

Istogramma creato con Plotly ExpressFigura 3: Un istogramma creato con Plotly Express

Abbiamo anche la possibilità di usare i Graph Objects.

import plotly.graph_objects as go

fig = go.Figure(data=[go.Histogram(x=olympic_data.age)])

# add the title
fig.update_layout(title=dict(text="Distribution of Athletes age"))
fig.show()

istogramma creato con Plotly Graph ObjectsFigura 4: Un istogramma creato con Plotly Graph Objects. 

Le funzioni di Plotly express internamente richiamano i graph_objects, che restituiscono un valore. Per questo le funzioni di Plotly Express sono utili: permettono di disegnare visualizzazioni che altrimenti richiederebbero più righe di codice se realizzate con graph_objects. 

Il modulo plotly.express (solitamente importato come px) contiene funzioni che possono creare intere figure in un colpo solo ed è indicato come Plotly Express o PX. Plotly Express è parte integrante della libreria Plotly ed è il punto di partenza consigliato per creare la maggior parte delle figure comuni. Ogni funzione di Plotly Express usa internamente i graph objects e restituisce un'istanza di plotly.graph_objects.Figure.

Fonte: Plotly Express in Python. 

Nonostante Plotly express sia il punto di ingresso consigliato alla libreria, useremo i graph_objects per personalizzare l'aspetto del nostro istogramma, perché offrono maggiore flessibilità.  

Personalizzare l'aspetto dell'istogramma Plotly

Al momento il nostro istogramma è piuttosto anonimo. Rendiamolo più curato cambiando i font del titolo e aggiungendo le etichette agli assi. 

# Create histogram
fig = go.Figure(data=[go.Histogram(x=olympic_data.age)])

fig.update_layout(
    # Set the global font
    font = {
        "family":"Times new Roman",
        "size":16
    },
    # Update title font
    title = {
        "text": "Distribution of Athletes age",
        "y": 0.9, # Sets the y position with respect to `yref`
        "x": 0.5, # Sets the x position of title with respect to `xref`
        "xanchor":"center", # Sets the title's horizontal alignment with respect to its x position
        "yanchor": "top", # Sets the title's vertical alignment with respect to its y position. "      
        "font": { # Only configures font for title
            "family":"Arial",
            "size":20,
            "color": "red"
        }
    }
)

# Add X and Y labels
fig.update_xaxes(title_text="Age")
fig.update_yaxes(title_text="Number of Athletes")

# Display plot
fig.show()

Istogramma Plotly con titolo aggiornatoFigura 5: Istogramma Plotly con titolo aggiornato ed etichette degli assi aggiunte. 

Con queste aggiunte, il nostro istogramma è più informativo. 

Ora cambiamo la dimensione di ciascun bin. 

# Create histogram
fig = go.Figure(data = [
    go.Histogram(
        x = olympic_data.age,
        xbins=go.histogram.XBins(size=5) # Change the bin size to 5
    )
  ]
)

Istogramma Plotly con dimensione del bin pari a 5Figura 6: Istogramma Plotly con dimensione del bin pari a 5. 

Nel codice sopra abbiamo impostato il parametro xbins nell'istanza go.Histogram a un'istanza di go.histogram.Xbins e definito la dimensione del bin desiderata come parametro di tale istanza. Nota che avremmo potuto eseguire questo passaggio anche usando un oggetto dict con proprietà compatibili. 

Infine, cambiamo il colore dei bin in arancione per far risaltare un po' di più la visualizzazione. 

# Create histogram
fig = go.Figure(data = [
    go.Histogram(
        x = olympic_data.age,
        xbins=go.histogram.XBins(size=5), # Change the bin size
        marker=go.histogram.Marker(color="orange") # Change the color
    )
  ]
)

Istogramma Plotly con bin arancioniFigura 7: Istogramma Plotly con bin arancioni.

Decisamente meglio. 

Nel codice sopra, abbiamo impostato il parametro marker nell'istanza go.Histogram a un'istanza di go.histogram.Marker e definito il colore desiderato come parametro di tale istanza. 

Esistono però molte altre personalizzazioni possibili per il nostro istogramma Plotly, ad esempio l'aggiunta di testo al passaggio del mouse (hover). 

Abilitare l'hover text

Attualmente, quando passi il mouse su una barra dell'istogramma, viene mostrato un testo che descrive cosa rappresenta ciascuna barra: vedi Figura 8. 

hover text attuale

Figura 8: L'hover text attuale visualizzato passando il mouse sul nostro istogramma. 

Non è molto intuitivo. Quando facciamo data visualization, vogliamo che i grafici siano autoesplicativi, persino nell'hover text. Aggiorniamo quindi le informazioni mostrate quando passiamo il mouse su un bin. 

# Create histogram
fig = go.Figure(data = [
    go.Histogram(
        x = olympic_data.age,
        xbins=go.histogram.XBins(size=5), # Change the bin size
        marker=go.histogram.Marker(color="orange"), # Change the color
        hovertemplate="<br>".join([
            "Age Range: %{x}",
            "Number of Athletes: %{y}"]) # Make hover text more informative
    )
  ]
)

hover text aggiornatoFigura 9: Le informazioni di hover text aggiornate. 

Il testo mostrato quando passiamo il mouse su un bin è molto più informativo, il che rende la nostra visualizzazione più semplice da interpretare. Lo abbiamo fatto aggiornando il parametro hovertemplate nella nostra istanza go.Histogram. 

Aggiungere opzioni di filtro

All'inizio del tutorial abbiamo detto che potevamo aspettarci di costruire un istogramma includendo le caratteristiche age, height, weight e year. Non c'è bisogno di creare un istogramma separato per ognuna. 

Possiamo invece creare un singolo istogramma e aggiungere pulsanti di filtro che ti permettano di passare da una feature all'altra da visualizzare. 

Ecco come appare in codice.

"""
Starter code provided by vestland on StackOverflow
Link: https://bit.ly/3ipqOMo
"""
# continuous features
continuous_vars = ["age", "height", "weight", "year"]

# plotly
fig = go.Figure()

# set up ONE trace
fig.add_trace(
    go.Histogram(x = olympic_data.age,
                xbins=go.histogram.XBins(size=5), # Change the bin size
                marker=go.histogram.Marker(color="orange"), # Change the color
            )
)

buttons = []

# button with one option for each dataframe
for col in continuous_vars:
    buttons.append(dict(method='restyle',
                        label=col,
                        visible=True,
                        args=[{"x":[olympic_data[col]],
                              "type":'histogram', [0]],
                        )
                  )

# some adjustments to the updatemenus
updatemenu = []
your_menu = dict()
updatemenu.append(your_menu)

updatemenu[0]['buttons'] = buttons
updatemenu[0]['direction'] = 'down'
updatemenu[0]['showactive'] = True

# add dropdown menus to the figure
fig.update_layout(showlegend=False, updatemenus=updatemenu)
fig.show()

istogramma con filtri applicatiFigura 10: L'istogramma con filtri applicati che consente agli utenti di passare tra varie feature in un'unica visualizzazione.

Ed ecco fatto; assicurati di dare un'occhiata al workbook Creare un istogramma Plotly con i dati delle Olimpiadi e di sperimentare con quanto costruito in questo tutorial. 

Conclusioni 

Ora sai come creare un istogramma in Plotly per Python; in questo tutorial abbiamo visto:

  • Che cos'è un istogramma e come funziona
  • L'importanza della data visualization nell'analisi dei dati
  • Come iniziare con DataLab
  • Come creare un istogramma in Plotly 
  • Diverse modalità per personalizzare il tuo istogramma
  • Come applicare filtri 

Se cerchi altre risorse sulla creazione di istogrammi o sull'uso di Plotly, consulta i link qui sotto:

Argomenti
Python
Data Visualization

Corsi su Plotly

Corso

Introduzione alla Data Visualization con Plotly in Python

4 ore
22K
Crea visualizzazioni dati interattive in Python con Plotly.
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