Esta é uma questão antiga, mas nenhuma das respostas anteriores abordou o problema real, ou seja, o fato de que o problema é com a própria questão.
Primeiro, se as probabilidades já foram calculadas, ou seja, os dados agregados do histograma estão disponíveis de forma normalizada, então as probabilidades deveriam somar 1. Elas obviamente não somam e isso significa que algo está errado aqui, seja com a terminologia ou com os dados ou na forma como a pergunta é feita.
Em segundo lugar, o fato de que os rótulos são fornecidos (e não intervalos) normalmente significaria que as probabilidades são de variável de resposta categórica - e o uso de um gráfico de barra para traçar o histograma é o melhor (ou algum hackeamento do método hist do pyplot), A resposta de Shayan Shafiq fornece o código.
No entanto, consulte o problema 1, essas probabilidades não estão corretas e usar o gráfico de barras neste caso como "histograma" seria errado porque não conta a história da distribuição univariada, por algum motivo (talvez as classes estão sobrepostas e as observações são contadas múltiplas vezes?) e esse gráfico não deve ser chamado de histograma neste caso.
O histograma é, por definição, uma representação gráfica da distribuição da variável univariada (consulte https://www.itl.nist.gov/div898/handbook/eda/section3/histogra.htm , https://en.wikipedia.org/wiki / Histograma) e é criado desenhando barras de tamanhos que representam contagens ou frequências de observações em classes selecionadas da variável de interesse. Se a variável for medida em uma escala contínua, essas classes são bins (intervalos). Parte importante do procedimento de criação de histograma é fazer a escolha de como agrupar (ou manter sem agrupar) as categorias de respostas para uma variável categórica, ou como dividir o domínio de valores possíveis em intervalos (onde colocar os limites do compartimento) para contínuos variável de tipo. Todas as observações devem ser representadas, e cada uma apenas uma vez na parcela. Isso significa que a soma dos tamanhos das barras deve ser igual à contagem total de observação (ou suas áreas no caso de larguras variáveis, que é uma abordagem menos comum). Ou, se o histograma for normalizado, todas as probabilidades devem somar 1.
Se os dados em si são uma lista de "probabilidades" como uma resposta, ou seja, as observações são valores de probabilidade (de algo) para cada objeto de estudo, então a melhor resposta é simplesmente plt.hist(probability)
com a opção talvez binning, e o uso de rótulos x já disponíveis é suspeito.
Então o gráfico de barra não deve ser usado como histograma, mas simplesmente
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()
com os resultados
matplotlib, nesse caso, chega por padrão com os seguintes valores de histograma
(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>)
o resultado é uma tupla de matrizes, a primeira matriz contém contagens de observação, ou seja, o que será mostrado contra o eixo y do gráfico (somam 13, número total de observações) e a segunda matriz são os limites de intervalo para x -eixo.
Pode-se verificar se eles estão igualmente espaçados,
x = plt.hist(probability)[1]
for left, right in zip(x[:-1], x[1:]):
print(left, right, right-left)
Ou, por exemplo, para 3 bins (minha opinião é de 13 observações), obter-se-ia este histograma
plt.hist(probability, bins=3)
com os dados do gráfico "atrás das barras" sendo
O autor da pergunta precisa esclarecer qual é o significado da lista de valores de "probabilidade" - é a "probabilidade" apenas um nome da variável de resposta (então por que existem rótulos x prontos para o histograma, não faz sentido ), ou os valores da lista são as probabilidades calculadas a partir dos dados (então, o fato de eles não somarem 1 não faz sentido).