Questa è una vecchia domanda ma nessuna delle risposte precedenti ha affrontato il vero problema, cioè il fatto che il problema sia con la domanda stessa.
Innanzitutto, se le probabilità sono già state calcolate, ovvero i dati aggregati dell'istogramma sono disponibili in modo normalizzato, le probabilità dovrebbero sommarsi a 1. Ovviamente non lo fanno e ciò significa che qualcosa non va qui, con la terminologia o con i dati o nel modo in cui viene posta la domanda.
In secondo luogo, il fatto che le etichette siano fornite (e non gli intervalli) significherebbe normalmente che le probabilità sono di una variabile di risposta categorica - e l'uso di un grafico a barre per tracciare l'istogramma è il migliore (o qualche hacking del metodo hist del pyplot), La risposta di Shayan Shafiq fornisce il codice.
Tuttavia, vedi il problema 1, quelle probabilità non sono corrette e l'uso del grafico a barre in questo caso come "istogramma" sarebbe sbagliato perché non racconta la storia della distribuzione univariata, per qualche motivo (forse le classi si sovrappongono e le osservazioni vengono contate più volte?) e in questo caso tale trama non dovrebbe essere chiamata istogramma.
L'istogramma è per definizione una rappresentazione grafica della distribuzione di variabili univariate (vedere https://www.itl.nist.gov/div898/handbook/eda/section3/histogra.htm , https://en.wikipedia.org/wiki / Istogramma) e viene creato disegnando barre di dimensioni che rappresentano conteggi o frequenze di osservazioni in classi selezionate della variabile di interesse. Se la variabile è misurata su una scala continua, quelle classi sono bin (intervalli). Una parte importante della procedura di creazione dell'istogramma è scegliere come raggruppare (o mantenere senza raggruppare) le categorie di risposte per una variabile categoriale, o come dividere il dominio dei possibili valori in intervalli (dove mettere i confini del bin) per continuo tipo variabile. Tutte le osservazioni dovrebbero essere rappresentate e ciascuna solo una volta nella trama. Ciò significa che la somma delle dimensioni delle barre dovrebbe essere uguale al conteggio totale delle osservazioni (o delle loro aree nel caso delle larghezze variabili, che è un approccio meno comune). Oppure, se l'istogramma è normalizzato, tutte le probabilità devono essere pari a 1.
Se i dati stessi sono un elenco di "probabilità" come risposta, cioè le osservazioni sono valori di probabilità (di qualcosa) per ogni oggetto di studio, la risposta migliore è semplicemente plt.hist(probability)
con l'opzione forse di binning, e l'uso di x-label già disponibili è sospettoso.
Quindi il grafico a barre non dovrebbe essere usato come istogramma ma semplicemente
import matplotlib.pyplot as plt
probability = [0.3602150537634409, 0.42028985507246375,
0.373117033603708, 0.36813186813186816, 0.32517482517482516,
0.4175257731958763, 0.41025641025641024, 0.39408866995073893,
0.4143222506393862, 0.34, 0.391025641025641, 0.3130841121495327,
0.35398230088495575]
plt.hist(probability)
plt.show()
con i risultati
matplotlib in tal caso arriva di default con i seguenti valori di istogramma
(array([1., 1., 1., 1., 1., 2., 0., 2., 0., 4.]),
array([0.31308411, 0.32380469, 0.33452526, 0.34524584, 0.35596641,
0.36668698, 0.37740756, 0.38812813, 0.39884871, 0.40956928,
0.42028986]),
<a list of 10 Patch objects>)
il risultato è una tupla di array, il primo array contiene i conteggi delle osservazioni, ovvero ciò che verrà mostrato sull'asse y del grafico (si sommano a 13, numero totale di osservazioni) e il secondo array sono i limiti dell'intervallo per x -asse.
Si può verificare che siano equidistanti,
x = plt.hist(probability)[1]
for left, right in zip(x[:-1], x[1:]):
print(left, right, right-left)
Oppure, ad esempio per 3 bin (il mio giudizio richiede 13 osservazioni) si otterrebbe questo istogramma
plt.hist(probability, bins=3)
con i dati della trama "dietro le sbarre"
L'autore della domanda deve chiarire qual è il significato dell'elenco di valori "probabilità" - la "probabilità" è solo un nome della variabile di risposta (allora perché ci sono x-etichette pronte per l'istogramma, non ha senso ), oppure i valori della lista sono le probabilità calcolate dai dati (quindi il fatto che non si sommino a 1 non ha senso).