16

matplotlib使用该pyplot.hist()函数创建了一个直方图。我想将 bin 高度 ( sqrt(binheight)) 的中毒误差平方根添加到条形图中。我怎样才能做到这一点?

.hist()包含的返回元组return[2]-> 1 个 Patch 对象的列表。我只能发现可以将错误添加到通过pyplot.bar().

4

2 回答 2

23

确实你需要使用 bar。您可以使用输出hist并将其绘制为条形图:

import numpy as np
import pylab as plt

data       = np.array(np.random.rand(1000))
y,binEdges = np.histogram(data,bins=10)
bincenters = 0.5*(binEdges[1:]+binEdges[:-1])
menStd     = np.sqrt(y)
width      = 0.05
plt.bar(bincenters, y, width=width, color='r', yerr=menStd)
plt.show()

在此处输入图像描述

于 2012-08-02T10:37:43.230 回答
8

替代解决方案

您还可以使用pyplot.errorbar()drawstyle关键字参数的组合。下面的代码使用阶梯线图创建直方图。每个 bin 的中心都有一个标记,每个 bin 都有必要的泊松误差条。

import numpy
import pyplot

x = numpy.random.rand(1000)
y, bin_edges = numpy.histogram(x, bins=10)
bin_centers = 0.5*(bin_edges[1:] + bin_edges[:-1])

pyplot.errorbar(
    bin_centers,
    y,
    yerr = y**0.5,
    marker = '.',
    drawstyle = 'steps-mid-'
)
pyplot.show()

我的个人意见

在同一张图上绘制多个直方图的结果时,线图更容易区分。此外,使用yscale='log'.

于 2014-03-04T02:05:49.873 回答