Avevo gia visto questo materiale, ma l’ho trascritto qui come ripasso.
Principio dell’inchiostro proporzionale
Il valore reale e l’inchiostro usato per rappresentarlo devono essere proporzionali.
- Un principio valido per tutte le visualizzazioni.
- L’asse x deve sempre partire da 0.
- Il rapporto verticale del grafico deve rappresentare le differenze nei dati.

Il grafico a sinistra non parte da 0. Quindi le proporzioni del grafico non riflettono le proporzioni reali dei dati. Per evitare fraintendimenti inutili, usare un grafico come quello a destra.
Bar Plot
- Dati rappresentati con barre, come dice il nome.
- Adatto per confrontare valori numerici tra categorie.
Classificazione per direzione delle barre
In matplotlib:
- .bar() : categorie sull’asse x, dati sull’asse y
- .barh() : categorie sull’asse y, valori sull’asse x
- Meglio quando ci sono molte categorie
Categorie multiple
- I bar plot rappresentano valori per una singola feature per categoria
- Mostrano valori per 1 sola feature
- Per visualizzare piu gruppi servono altri metodi
Soluzioni:
- Grafici multipli
- Rappresentare simultaneamente in un singolo grafico
- Impilati
- Sovrapposti
- Affiancati
Bar plot impilato

- Impilare 2 o piu gruppi
- La distribuzione della barra impilata piu in basso e facile da vedere.
- Le barre impilate sopra sono piu difficili da interpretare.
- matplotlib
- .bar() usa il parametro bottom per impilare.
- .barh() usa il parametro left per impilare.
Bar chart impilato a percentuale

Dato che i bar plot impilati rendono difficile vedere la distribuzione complessiva, qui si converte il bar chart impilato in percentuali.
Bar plot sovrapposto

- Buono per confrontare solo 2 gruppi.
- Confrontare regolando la trasparenza (alpha).
- Tenere presente che luminosita e saturazione del colore influenzano anche l’effetto di trasparenza.
- Non ottimale per 3 o piu gruppi.
- In quel caso meglio gli area plot.
Bar plot raggruppato
Il metodo piu efficace! 
- Posizionare le barre dei gruppi affiancate
- L’implementazione e complicata in matplotlib, quindi si gestisce in seaborn.
- Usa .set_xticks(), .set_xticklabels().
Tutti i metodi sopra funzionano bene con 5-7 gruppi. Se ci sono piu gruppi, servono approcci diversi.
Ordinamento dei dati
- L’ordinamento e obbligatorio
- es., in pandas: sort_values(), sort_index()
- Ordinare appropriatamente per tempo, dimensione, ordine delle categorie o valore delle categorie.
Uso appropriato dello spazio
- Il bar plot di matplotlib riempie l’ax e risulta stretto
- Regolare con i seguenti metodi:
- Limiti asse X/Y (.set_xlim(), .set_ylim())
- Spine (.spines[spine].set_visible())
- Gap (width)
- Legenda (.legend()), dove posizionarla
- Margini (.margins())