【问题标题】:Plotting Histogram With Pylab使用 Pylab 绘制直方图
【发布时间】:2011-10-14 18:56:14
【问题描述】:

在 Python 2.7 中工作。

我正在尝试为随机游走的 50 次运行生成的数字绘制直方图。但是当我使用 pylab.hist(batting_average, bins = 10) 时,我得到一个奇怪的多色直方图,它接近 500,但只有 50 次步行,它应该能够在 y 上运行的最大值-axis 将是 50。

这是我的代码:

a = ['Hit', 'Out']
b = [.3, .7]


def battingAverage(atBats, some_list=a, probabilities=b):
    num_hits = 0
    num_outs = 0
    current_BA = []
    for i in range(1,atBats):
        if random_pick(a, b) == 'Hit':
            num_hits += 1
        else:
            num_outs +=1
        BA = float(num_hits)/(float(num_hits)+float(num_outs))
        current_BA.append(BA)
    return current_BA

def printBAs():
    for i in range(50):
        batting_average = battingAverage(501)
        pylab.hist(batting_average, bins=10)

我的直方图有什么问题!?

如果有什么需要澄清的,请告诉我,我会尽力而为。

【问题讨论】:

    标签: python histogram matplotlib


    【解决方案1】:

    传递给battingAverage 的参数是 501... 并且是击球次数。您正在制作 50 个直方图,每个直方图有 500 个击球次数。

    (哦,你需要修复代码的格式......缩进搞砸了。)

    您的代码没有按照您的想法执行。

    我认为您希望 battingAverage 返回最终的击球率,但它会返回一个击球率列表,每个击球率都有一个击球率。 然后你正在绘制该列表。

    我认为您想从 battingAverage 返回一个数字,并且您想在 printBAs() 函数中累积列表,并将 pylab.hist 移出 for 循环。

    我想这不是家庭作业吗?

    换句话说,我认为你想要这样的东西:

    a = ['Hit', 'Out']
    b = [.3, .7]
    
    def battingAverage(atBats, results=a, probabilities=b):
        num_hits = 0
        num_outs = 0
        for i in range(atBats):
            if random_pick(results, probabilities) == 'Hit':
                num_hits += 1
            else:
                num_outs +=1
        BA = float(num_hits)/(float(num_hits)+float(num_outs))
        return BA
    
    def printBAs():
        batting_averages = [battingAverage(500) for i in range(50)]
        pylab.hist(batting_averages, bins=10)
    

    虽然该代码仍需要清理...

    【讨论】:

    • 但是 501 指的是函数 battingAverage 有 500 个 at-bats,所以我将 printBAs() 中的 batting_average 设置为由 500 个 at-bats 组成的列表 current_BA。
    • 啊。这很有意义。因为在我将每一步的击球率平均打印为一条线之前。不,不是家庭作业。我只是一个业余爱好者。
    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 2016-06-09
    • 2015-10-25
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    相关资源
    最近更新 更多