带有误差条的Matplotlib直方图

nnt7mjpx  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(194)

我已经使用pyplot.hist()函数创建了一个matplotlib直方图。我想在条形图中添加一个容器高度的Poison误差平方根(sqrt(binheight))。我该怎么做?
.hist()的返回元组包括return[2]-> 1 Patch对象的列表。我只能发现可以向通过pyplot.bar()创建的条形图添加错误。

fiei3ece

fiei3ece1#

实际上,你需要使用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()

vc6uscn9

vc6uscn92#

替代方案

您也可以使用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'绘制时,它们看起来更好。

相关问题