Rendi i tuoi grafici fantastici con UTF-8
Make your graphics fantastic with UTF-8.
Incorporare icone personalizzate in Plotly Express

Le principali librerie grafiche di Python creano bellissimi grafici di default, ma sono progettati per l’analisi esplorativa dei dati, report professionali e articoli scientifici. Possono risultare un po’ noiosi per il pubblico generale e altre persone non tecniche.
In questo progetto di successo rapido di Data Science, vedremo un modo per rendere i nostri grafici più interessanti utilizzando icone facilmente disponibili che possono essere trattate come testo. In particolare, utilizzeremo la popolare libreria Plotly Express per creare un grafico a barre del massimo numero teorico di quadrati che ogni pezzo degli scacchi può controllare contemporaneamente (assumendo che il pezzo sia al centro di una scacchiera vuota).
Per rendere questo un’infografica più coinvolgente, decoreremo le barre con simboli disponibili nella collezione di caratteri UTF-8.

Cos’è UTF-8?
Secondo Wikipedia, “UTF-8 è uno standard di codifica caratteri a lunghezza variabile utilizzato per la comunicazione elettronica. Definito dallo standard Unicode, il nome deriva dal Unicode (o Universal Coded Character Set) Transformation Format – 8-bit. UTF-8 è la codifica dominante per il World Wide Web (e le tecnologie Internet)”.
- MLOps Tempo come gli obiettivi strategici creano iterazioni più veloci?
- Fai contare ogni dollaro di marketing con la scienza dei dati.
- La migliore alternativa a Seaborn Distplot in Python
Con UTF-8, ogni carattere che si desidera utilizzare, come il simbolo per pi o la lettera “A”, viene assegnato un codice univoco. Oltre ai caratteri di testo familiari, UTF-8 include icone per tutti i tipi di cose, dai volti sorridenti ai jet ai lumache. Queste icone possono essere trattate come testo quando si annotano i grafici di Plotly Express.
Trovare le icone UTF-8
È possibile cercare le icone UTF-8 su questo sito. Invece di cercare singolarmente ogni pezzo degli scacchi, cercare “scacchi”. Ciò restituirà la pagina mostrata di seguito, con un elenco di icone compatibili.

Se si fa clic sull’icona del cavaliere bianco, si otterrà la schermata sottostante.

Ecco la parte divertente. Per utilizzare questa icona, basta selezionarla e copiare l’immagine grande. È possibile quindi incollare questa immagine direttamente nel proprio codice Python, come mostrerò a breve. Non è necessario inserire il codice UTF-8 effettivo.
La libreria Plotly Express
Per creare il grafico, utilizzeremo Plotly Express, una versione di livello superiore della libreria grafica Plotly. Questa libreria astrae gran parte della noia nella creazione di grafici e consente di produrre facilmente figure attraenti con molte funzionalità integrate.
Plotly Express richiede Plotly come dipendenza. È possibile installarlo con conda o pip.
Ecco l’installazione con conda: conda install -c plotly plotly_express
Ecco invece la versione con pip: pip install plotly
Il Codice
Il seguente codice è stato eseguito in JupyterLab. È presentato e descritto per cella.
Importazione delle librerie
Plotly Express è progettato per funzionare bene con i dati nel formato pandas DataFrame, quindi importeremo sia Plotly Express che pandas. Pandas può essere installato sia tramite conda install pandas
che tramite pip install pandas
.
import pandas as pdimport plotly.express as px
Inserimento dei dati
Inseriremo i dati in due dizionari che utilizzano i nomi dei pezzi come chiavi. Uno conterrà il numero di caselle controllate per pezzo e l’altro conterrà i simboli UTF-8. Li uniremo sul nome del pezzo, quindi questi dovrebbero essere gli stessi in entrambi i dizionari.
È interessante notare come si possa incollare direttamente l’icona dalla pagina di ricerca UTF-8 precedentemente menzionata. Non è fantastico? Devi solo racchiuderlo tra virgolette singole o doppie poiché viene considerato una stringa.
squares = {'King': 8, 'Queen': 27, 'Rook': 14, 'Bishop': 13, 'Knight': 8, 'Pawn': 2}symbols = {'King': '♔', 'Queen': '♕', 'Rook': '♖', 'Bishop': '♗', 'Knight': '♘', 'Pawn': '♙'}df_squares = pd.DataFrame(squares.items(), columns=['Piece', 'Max Squares'])df_squares = df_squares.sort_values(by='Max Squares')df_symbols = pd.DataFrame(symbols.items(), columns=['Piece', 'Symbol'])df_merged = df_squares.merge(df_symbols)df_merged.head(6)

Creazione della grafico
Plotly Express rende facile generare grafici standard come grafici a barre, scattergrammi, mappe di calore, ecc. Qui useremo il metodo bar()
per fare un grafico a barre. Una volta che hai passato il nome del DataFrame al metodo, devi solo fornire i nomi delle colonne per accedere ai dati negli argomenti successivi. Questo rende il codice molto leggibile.
L’argomento text
cattura il simbolo UTF-8, che verrà posizionato automaticamente vicino alla parte superiore di ogni barra. Per controllare la dimensione del simbolo, utilizzare l’argomento textfont_size
del metodo update_traces()
. L’argomento marker_color
si riferisce al colore della barra, non al colore del simbolo.
fig = px.bar(df_merged, x='Piece', y='Max Squares', height=550, text='Symbol')fig.update_traces(textfont_size=70, marker_color='black')fig.show() # optional

Come si può vedere, le icone UTF-8 possono essere trattate come testo regolare quando si fanno grafici in Plotly Express. Ciò significa che puoi usarle come annotazioni di testo e posizionarle ovunque desideri. Nell’esempio seguente, inseriamo un faccina sorriso rosso sopra la barra del Cavallo per dimostrare il processo.
# Add annotation:fig.add_annotation(dict(font=dict(color='red', size=50), x=0.39, y=0.45, showarrow=False, text="☺", textangle=0, xanchor='left', xref="paper", yref="paper"))fig.show() # optional

Risultati
Gli icon utf-8 ti permettono di aggiungere un po’ di fantasia ai tuoi grafici, dandogli un tipo di sensazione “infografica”. Anche se non necessario o addirittura desiderato per il lavoro analitico o gli articoli scientifici, decorare i grafici in questo modo può essere utile nella preparazione di newsletter, tutorial, rapporti annuali e altri documenti rivolti a un pubblico non tecnico.
Grazie!
Grazie per aver letto e ti invito a seguirmi per altri progetti Quick Success Data Science in futuro.