繁体   English   中英

绘制具有恒定条宽但不同 bin 大小的直方图

[英]Plot a histogram with constant bar widths but different bin sizes

我有一个 Python 脚本,它生成三个数据集的单个直方图,其中 bin 大小作为列表提供。 Python脚本sippet如下:

bin_l=np.arange(0,14,1)
bin_l=np.append(bin_l,max_bin)

plt.hist([wind_plot_o, wind_plot_m, wind_plot_b],bins=bin_l, align='mid',
     label=['label1', 'label2', 'label3'],color=['k','g', 'r'])

其中,后面附加到bin_l的元素是给定数据的最大值。 所以最后一个 bin 大小将与其他 bin 大小不同。
上面的脚本片段以及脚本的其余部分产生了以下图:
直方图 这很好,除了一个问题。 我需要所有条形尺寸相同,我不希望条形尺寸取决于 bin 大小,这在我的情况下看起来不太好。
hist() 的 matplotlib 文档说参数 'rwidth' 可用于调整条形宽度,仍然相对于 bin 大小,这是它目前正在做的事情,对我没有用。
那么,如何在使用不均匀的 bin 大小时保持 matplotlib 直方图的条形宽度相同?

注意:它可能看起来像这篇文章的副本,但事实并非如此。 我没有对 X 轴使用对数刻度。

这有点不合常规。 但是plt.hist返回每个 bin 中的元素数。 您可以使用此数据(或从numpy.histogram跳过绘制原始直方图)来创建具有相等宽度的“条形图”。

counts, _, _ = plt.hist(...)
plt.close()                                # Don't want the plot from plt.hist
for n, Y in enumerate(counts):
    X = [n*.3 + x for x in range(len(Y))]  # position bars next to each other
    plt.bar(X, Y, 0.3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM