Imposta manualmente la dimensione dei contenitori nell'istogramma Matplotlib
-
Bin Boundaries come parametro per la funzione
hist()
- Calcola il numero di contenitori dalla larghezza desiderata
Per disegnare l’istogramma, usiamo la funzione hist2d()
dove il numero di bin n
viene passato come parametro. Possiamo impostare la dimensione dei contenitori calcolando il numero di contenitori richiesto per mantenere la dimensione richiesta.
Bin Boundaries come parametro per la funzione hist()
Sintassi per funzione hist
:
hist(x,
bins: NoneType=None,
range: NoneType=None,
density: NoneType=None,
weights: NoneType=None,
cumulative: bool=False,
bottom: NoneType=None,
histtype: str=built-ins.str,
align: str=built-ins.str,
orientation: str=built-ins.str,
rwidth: NoneType=None,
log: bool=False,
color: NoneType=None,
label: NoneType=None,
stacked: bool=False,
normed: NoneType=None,
data: NoneType=None,
**kwargs)
Per impostare la dimensione dei bin in Matplotlib, passiamo una lista con i limiti dei bin invece del numero di bin come parametro bin
.
import numpy as np
import numpy.random as random
import matplotlib.pyplot as plt
data = np.random.random_sample(100) * 100.0
plt.hist(data, bins=[0, 10, 20, 30, 40, 50, 60, 80, 100])
plt.xlabel("Value")
plt.ylabel("Counts")
plt.title("Histogram Plot of Data")
plt.grid(True)
plt.show()
Nell’esempio sopra, impostiamo manualmente i limiti del bin e indirettamente la larghezza del bin. Potremmo anche usare np.arange
per trovare confini equidistanti.
Per rendere i bin equidistanti, possiamo usare np.arange
per trovare confini equidistanti
import numpy as np
import numpy.random as random
import matplotlib.pyplot as plt
binwidth = 10
data = np.random.random_sample(100) * 100.0
plt.hist(data, bins=np.arange(min(data), max(data) + binwidth, binwidth))
plt.xlabel("Data")
plt.ylabel("Counts")
plt.title("Histogram Plot of Data")
plt.grid(True)
plt.show()
np.arange
deve essere max(data) + binwidth
ma non max(data)
, perché l’intervallo creato da np.arange(start, stop, step)
include start
ma esclude stop
. Pertanto, dobbiamo aggiungere l’intervallo binwidth
a max(data)
per rendere lo stop effettivo come max(data)
.Calcola il numero di contenitori dalla larghezza desiderata
Per trovare il numero di contenitori, calcoliamo il risultato di valore massimo-valore minimo
diviso per la larghezza del contenitore desiderata.
import numpy as np
import matplotlib.pyplot as plt
def find_bins(observations, width):
minimmum = np.min(observations)
maximmum = np.max(observations)
bound_min = -1.0 * (minimmum % width - minimmum)
bound_max = maximmum - maximmum % width + width
n = int((bound_max - bound_min) / width) + 1
bins = np.linspace(bound_min, bound_max, n)
return bins
data = np.random.random_sample(120) * 100
bins = find_bins(data, 10.0)
plt.hist(data, bins=bins)
plt.xlabel("Data")
plt.ylabel("Counts")
plt.title("Histogram Plot")
plt.show()
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn