使用pyplot正确显示容器

时间:2012-11-09 05:49:20

标签: python matplotlib histogram

可能是一个简单修复的简单问题,但我对binning的实际工作方式感到困惑。我想绘制一个相当简单的直方图。 x轴应该只有两个值,0和1,y轴的浮点数介于0和1.0之间,表示每个值的频率。 0和1都是数组中唯一的值,但是当我显示直方图时,这些区块似乎与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()

任何人都可以提供有关我在这里做错的见解吗?

1 个答案:

答案 0 :(得分: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()