C'est une vieille question mais aucune des réponses précédentes n'a abordé le vrai problème, c'est-à-dire le fait que le problème vient de la question elle-même.
Premièrement, si les probabilités ont déjà été calculées, c'est-à-dire que les données agrégées de l'histogramme sont disponibles de manière normalisée, les probabilités devraient s'additionner à 1. Ce n'est évidemment pas le cas et cela signifie que quelque chose ne va pas ici, soit avec la terminologie, soit avec les données ou dans la manière dont la question est posée.
Deuxièmement, le fait que les étiquettes soient fournies (et non des intervalles) signifierait normalement que les probabilités sont des variables de réponse catégorielles - et l'utilisation d'un diagramme à barres pour tracer l'histogramme est préférable (ou un piratage de la méthode hist du pyplot), La réponse de Shayan Shafiq fournit le code.
Cependant, voir le problème 1, ces probabilités ne sont pas correctes et utiliser un diagramme à barres dans ce cas comme «histogramme» serait faux car il ne raconte pas l'histoire de la distribution univariée, pour une raison quelconque (peut-être que les classes se chevauchent et que les observations sont comptées plusieurs fois?) et un tel tracé ne doit pas être appelé un histogramme dans ce cas.
L'histogramme est par définition une représentation graphique de la distribution d'une variable univariée (voir https://www.itl.nist.gov/div898/handbook/eda/section3/histogra.htm , https://en.wikipedia.org/wiki / Histogramme) et est créé en dessinant des barres de tailles représentant des nombres ou des fréquences d'observations dans des classes sélectionnées de la variable d'intérêt. Si la variable est mesurée sur une échelle continue, ces classes sont des cases (intervalles). Une partie importante de la procédure de création d'histogramme consiste à choisir comment regrouper (ou conserver sans regrouper) les catégories de réponses pour une variable catégorielle, ou comment diviser le domaine des valeurs possibles en intervalles (où placer les limites de la case) pour variable de type. Toutes les observations doivent être représentées et chacune une seule fois dans le graphique. Cela signifie que la somme des tailles des barres doit être égale au nombre total d'observations (ou à leurs surfaces dans le cas des largeurs variables, ce qui est une approche moins courante). Ou, si l'histogramme est normalisé, toutes les probabilités doivent totaliser 1.
Si les données elles-mêmes sont une liste de «probabilités» comme réponse, c'est-à-dire que les observations sont des valeurs de probabilité (de quelque chose) pour chaque objet d'étude, alors la meilleure réponse est simplement plt.hist(probability)
avec l'option peut-être de regroupement, et l'utilisation d'étiquettes x déjà disponibles est méfiant.
Ensuite, le graphique à barres ne doit pas être utilisé comme histogramme mais plutôt simplement
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()
avec les résultats
matplotlib dans ce cas arrive par défaut avec les valeurs d'histogramme suivantes
(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>)
le résultat est un tuple de tableaux, le premier tableau contient les décomptes d'observations, c'est-à-dire ce qui sera affiché par rapport à l'axe y du tracé (ils totalisent 13, le nombre total d'observations) et le deuxième tableau est les limites d'intervalle pour x -axe.
On peut vérifier qu'ils sont également espacés,
x = plt.hist(probability)[1]
for left, right in zip(x[:-1], x[1:]):
print(left, right, right-left)
Ou, par exemple pour 3 bacs (mon jugement appelle 13 observations) on obtiendrait cet histogramme
plt.hist(probability, bins=3)
avec les données de tracé "derrière les barreaux" étant
L'auteur de la question doit clarifier la signification de la liste de valeurs «probabilité» - la «probabilité» est-elle juste un nom de la variable de réponse (alors pourquoi y a-t-il des étiquettes x prêtes pour l'histogramme, cela n'a aucun sens ), ou les valeurs de liste sont-elles les probabilités calculées à partir des données (alors le fait qu'elles ne totalisent pas 1 n'a aucun sens).