2012-11-09 42 views
0

可能是一个简单的问题,只是简单的修复,但我很疑惑binning实际上是如何工作的。我想绘制一个相当简单的直方图。 x轴应该只有两个值0和1,而y轴的浮点数在0到1.0之间,表示每个值的频率。 0和1都是数组中唯一的值,但是当我显示我的直方图时,箱子似乎没有与0和1对齐,并且x轴上有多个不需要的刻度线。我如何制作这个图表,在x轴(0和1)上只显示两个刻度,并且每个这些值的相应频率列在刻度上正确显示?用pyplot正确显示垃圾箱

这里是我的代码:

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() 

任何人都可以提供上,我做错了什么在这里任何见解?

+0

试试这个回答:http://stackoverflow.com/a/1144137/1290420 – gauden

回答

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() 
+0

LOL哇完美修复。我之前曾尝试过使用xticks,但我想我可能会错误地格式化它,所以它真的与布局混淆。非常感谢! – maniciam