0

可能是一个简单修复的简单问题,但我对分箱的实际工作方式感到困惑。我想绘制一个相当简单的直方图。x 轴应该只有两个值,0 和 1,y 轴的浮点数介于 0 和 1.0 之间,表示每个值的频率。0 和 1 都是数组中唯一的值,但是当我显示直方图时,这些 bin 似乎没有与 0 和 1 对齐,并且 x 轴上有几个不需要的刻度线。如何制作此图,以便在 x 轴(0 和 1)上仅显示两个刻度,并且每个值的相应频率列正确显示在刻度上方?

这是我的代码:

trials = []
for i in range (m):
    trials.append(bernoulli_trial(p))
plt.figure(1)
plt.hist(trials, bins=2, align="mid", weights=np.zeros_like(trials) + 1. / len(trials))
plt.ylim(0,1.0)
plt.title("Bernoulli Distribution with p = " + str(p))
plt.xlabel("Outcome")
plt.ylabel("Probability")    
plt.show()

谁能提供任何关于我在这里做错了什么的见解?

4

1 回答 1

1
plt.figure(1)
plt.hist(trials, bins=2, align="mid",
         weights=np.zeros_like(trials) + 1. / len(trials))


# ------------------------------
# New lines to add tick marks as requested
tick_locs = [0.25, 0.75]
tick_lbls = ['0','1']
plt.xticks(tick_locs, tick_lbls)
# ------------------------------

plt.ylim(0,1.0)
plt.title("Bernoulli Distribution with p = " + str(p))
plt.xlabel("Outcome")
plt.ylabel("Probability")    
plt.show()
于 2012-11-09T06:42:38.720 回答