Проблема в том, что ваши значения x разделены интервалом 0,1, а ширина полосы по умолчанию равна 1, поэтому вы видите перекрывающиеся полосы. Решение состоит в том, чтобы определить ширину стержня. В вашем случае ширина стержня меньше 0,1 будет отлично работать. Например, вы можете использовать width=0.05
, и вы получите следующий график.
Почему отрицательный? : бары по умолчанию центрированы на 0, 1, 2, 3 и т. Д. Таким образом, ваш первый столбец в вопросе был нарисован по центру 0 и имел ширину 1. Поэтому он колебался от -0,5 до +0,5.
rects1 = plt.bar([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,1],
[1, 2, 4, 10, 5, 9, 1,4, 9, 9], width=0.05, edgecolor='black')
plt.xlabel('Sample Mean')
plt.ylabel('Probability')
Если вы не хотите, чтобы столбцы были при x <0 </strong>: вы можете выровнять столбцы вправо, передав аргумент align='edge
.
rects1 = plt.bar([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,1],
[1, 2, 4, 10, 5, 9, 1,4, 9, 9], width=0.05, align='edge',
edgecolor='black')