Matplotlib - Grafico a barre

Un grafico a barre o un grafico a barre è un grafico o un grafico che presenta dati categoriali con barre rettangolari con altezze o lunghezze proporzionali ai valori che rappresentano. Le barre possono essere tracciate verticalmente o orizzontalmente.

Un grafico a barre mostra i confronti tra categorie discrete. Un asse del grafico mostra le categorie specifiche da confrontare e l'altro asse rappresenta un valore misurato.

L'API Matplotlib fornisce l'estensione bar()funzione che può essere utilizzata nell'uso in stile MATLAB così come API orientata agli oggetti. La firma della funzione bar () da utilizzare con l'oggetto assi è la seguente:

ax.bar(x, height, width, bottom, align)

La funzione crea un grafico a barre con il rettangolo di dimensione delimitato (x −width = 2; x + width = 2; bottom; bottom + height).

I parametri della funzione sono:

X sequenza di scalari che rappresentano le coordinate x delle barre. allinea i controlli se x è il centro della barra (predefinito) o il bordo sinistro.
altezza scalare o sequenza di scalari che rappresentano l'altezza o le altezze delle barre.
larghezza scalare o array-like, opzionale. la larghezza (e) delle barre è di default 0,8
parte inferiore scalare o array-like, opzionale. le coordinate y delle barre sono predefinite Nessuna.
allineare {"center", "edge"}, facoltativo, "center" predefinito

La funzione restituisce un oggetto contenitore Matplotlib con tutte le barre.

Di seguito è riportato un semplice esempio del grafico a barre Matplotlib. Mostra il numero di studenti iscritti a vari corsi offerti presso un istituto.

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
ax.bar(langs,students)
plt.show()

Quando si confrontano più quantità e quando si cambia una variabile, potremmo volere un grafico a barre in cui abbiamo barre di un colore per un valore di quantità.

Possiamo tracciare più grafici a barre giocando con lo spessore e le posizioni delle barre. La variabile di dati contiene tre serie di quattro valori. Il seguente script mostrerà tre grafici a barre di quattro barre. Le barre avranno uno spessore di 0,25 unità. Ciascun grafico a barre verrà spostato di 0,25 unità rispetto a quello precedente. L'oggetto dati è un multidict contenente il numero di studenti passati in tre rami di un college di ingegneria negli ultimi quattro anni.

import numpy as np
import matplotlib.pyplot as plt
data = [[30, 25, 50, 20],
[40, 23, 51, 17],
[35, 22, 45, 19]]
X = np.arange(4)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(X + 0.00, data[0], color = 'b', width = 0.25)
ax.bar(X + 0.25, data[1], color = 'g', width = 0.25)
ax.bar(X + 0.50, data[2], color = 'r', width = 0.25)

Il grafico a barre in pila impila le barre che rappresentano diversi gruppi uno sopra l'altro. L'altezza della barra risultante mostra il risultato combinato dei gruppi.

Il parametro inferiore opzionale di pyplot.bar()funzione consente di specificare un valore iniziale per una barra. Invece di andare da zero a un valore, andrà dal basso al valore. La prima chiamata a pyplot.bar () traccia le barre blu. La seconda chiamata a pyplot.bar () traccia le barre rosse, con la parte inferiore delle barre blu nella parte superiore delle barre rosse.

import numpy as np
import matplotlib.pyplot as plt
N = 5
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
ind = np.arange(N) # the x locations for the groups
width = 0.35
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(ind, menMeans, width, color='r')
ax.bar(ind, womenMeans, width,bottom=menMeans, color='b')
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
ax.set_yticks(np.arange(0, 81, 10))
ax.legend(labels=['Men', 'Women'])
plt.show()