Istogramma con Python

Nella crescente richiesta di competenze in “data science”, o scienza dell’elaborazione dei dati, è spesso necessario di aggiungere ai nostri software dei semplici grafici. Vediamo come ad esempio disegnare col Python un istogramma.

Per il nostro scopo ci affidiamo ad una libreria python molto diffusa che è la Matplot (https://matplotlib.org/), molto potente per disegnare grafici a due o tre dimensioni che non fanno rimpiangere la semplicità dei più diffusi fogli di calcolo e non trascurano esigenze complesse come programmi di processamento dati come il blasonato Matlab. Le nostre pretese sono per il momento semplici ma possono aggiungere un tocco di classe ai nostri software. Per procedere quindi importiamo la libreria o parte di essa, magari con tanto di ridenominazione per semplificarne l’uso nel codice. Mentre su linux è facile che il prompt Python abbia già inclusa questa libreria, su Windows probabilmente si dovrà installare a parte  con queste istruzioni. Aggiungiamo che il nostro esempio è semplicistico, spesso questa libreria è importata con  assieme ad altre per la gestione dei calcoli matematici complessi come la Numpy.

import matplotlib.pyplot as plot

Vediamo un semplice istogramma dove abbiamo una certo numero di classi, nel nostro caso ne creiamo tre fittizie con i nomi pippo, pluto, paperino. Sono gli elementi dell’asse delle x, le ascisse. Solitamente possono essere o classi che identificano un singolo oggetto (es. gli alunni maschi o femmine, i personaggi dei fumetti come in questo esempio) o un intervallo di valori (tutti gli alunni maschi tra 15 e 18 anni, tutte le alunne femmine tra 19 e 21 anni ecc). Sull’asse delle ordinate andiamo a riportare invece quanti elementi cadono nella classe di riferimento, ovvero la densità di frequenza o se preferite le occorrenze, permettendoci di “alzare il rettangolo” associato.

Se queste grandezze le definiamo in altrettante liste “classi” ed “occorrenze”,  ovviamente della stessa cardinalità dove quindi associamo il primo elemento della lista classi con il primo della lista occorrenze, un po’ come si fa con i vettori paralleli per usare un concetto noto agli alunni.

classi = ['pippo', 'pluto', 'paperino']
occorrenze = [10, 15, 23]

Se nel flusso del nostro software dovesse presentarsi la necessità di aggiungere una classe con relativa frequenza, si può sempre procedere con “appenderla” alla fine della nostra lista come fatto con la classe minnie, 70 del nostro esempio. Per altre necessità più complesse di gestione liste vi suggerisco di approfondire sul manuale ufficiale qui

classi.append('minnie')
occorrenze.append(70)

Create le due liste possiamo procedere a disegnarla con pochi semplici comandi bar per passare le list, suptitle per dare un titolo al nostro istogramma e show per disegnare il tutto.

plot.bar(classi, occorrenze)
plot.suptitle('Istogramma fumetti')
plot.show()

Il codice completo è quello sotto riportato. Per testarlo usate un qualsiasi IDE Python, come IDLE o PyCharm o se non volete installare nulla potete provarlo su https://repl.it avendo però premura di non usare la voce Python o Python 2.2, che forniscono solo la riga di comando, ma la voce Tkinter che è la versione di Python con interfaccia grafica. Potete approfondire altre funzioni di Tkinter anche tra le pagine di questo sito.

import matplotlib.pyplot as plot


classi = ['pippo', 'pluto', 'paperino']
occorrenze = [10, 15, 23]

classi.append('minnie')
occorrenze.append(70)

plot.bar(classi, occorrenze)
plot.suptitle('Istogramma fumetti')
plot.show()

Ultima modifica 25 Febbraio 2022