我使用matplotlib
函数创建了一个pyplot.hist()
的直方图。我想在条形图中添加一个bin高度(sqrt(binheight)
)的毒性误差平方根。我怎么能这样做?
.hist()
的返回元组包括return[2]
- >一个Patch对象的列表。我只能发现可以通过pyplot.bar()
创建的条形码添加错误。
答案 0 :(得分:12)
确实你需要使用吧。您可以使用输出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()
答案 1 :(得分:5)
您还可以使用pyplot.errorbar()
和drawstyle
关键字参数的组合。下面的代码使用阶梯线图创建直方图。每个箱子的中心都有一个标记,每个箱子都有必要的泊松误差棒。
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'
绘图时,它们看起来更好。