【问题标题】:Assign labels to non-empty bins in a histogram (using matplotlib)将标签分配给直方图中的非空箱(使用 matplotlib)
【发布时间】:2018-08-27 18:15:51
【问题描述】:

我正在尝试绘制一个分布数据,其中该列表中的大多数值接近一个数字(因此在同一个 bin 中),并且一些值接近不同的数字。因此,直方图看起来像是有一两个大的 bin/bar 和一两个小的 bin/bar,几乎看不到。 想要做的是突出显示其中包含实际数据的箱。我想用标签来做。因此,在我的示例中,我只想为带有“1”的 bin 和带有“10”的 bin 设置标签,我想在其中显示此 bin 中的值的数量。这对于带有“10”的垃圾箱特别有用,因为与带有“1”的垃圾箱相比,它几乎不可见。谁能给个提示?

data_list = [1, 1, 1, 1, 1, 1, 10]
number_of_bins = int(len(set(data_list)))
ax = plt.subplot()
(n, bins, patches) = ax.hist(data_list, histtype='bar', bins=number_of_bins, edgecolor="black")
plt.show()

【问题讨论】:

    标签: python python-3.x matplotlib histogram


    【解决方案1】:

    使用这个helper function

    def bins_labels(bins, **kwargs):
        bin_w = (max(bins) - min(bins)) / (len(bins) - 1)
        plt.xticks(np.arange(min(bins)+bin_w/2, max(bins), bin_w), bins, **kwargs)
        plt.xlim(bins[0], bins[-1])
    

    你可以这样做:

    data_list = [1, 1, 1, 1, 1, 1, 10]
    number_of_bins = int(len(set(data_list)))
    ax = plt.subplot()
    (n, bins, patches) = ax.hist(data_list, histtype='bar', bins=number_of_bins, edgecolor="black")
    bins_labels(bins, fontsize=20)
    plt.show()
    

    【讨论】:

    • 非常感谢您的回答,但这并不完全是我想要的。我猜我的示例 data_set 不太正确。因此,该集合实际上看起来像 [1.01, 1.02, 1.03, .... 1.0x, 10.01, 10.02]。所以我的垃圾箱将是 1、2、3、4、5、6、7、8、9、10。只有垃圾箱 1 和垃圾箱 10 里面会有实际的东西,其余的都是空的。我只想打印包含一些内容的垃圾箱标签。
    • 您可以分享您的数据的实际样本吗?
    • 数据如下:[4000.22, 100.01, 99.12, 101.44, 100.75, 101.21, 99.31, 100.91, 103.71, 100.02, 100.03, ..., 100.04, 101.02, list 的长度只有 100 个(在我目前的情况下)。我经常看到,有 1-2 次出现与另一个完全不同的数字(在这种情况下,所有数字都在 100 左右)。并且出现 1-2 次的条几乎不可见,所以我想通过打印一个箱中的成员数量来使其更明显,如果箱不是空的(因为 100 到 4000 之间的所有箱都是空的。我用错了直方图吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    相关资源
    最近更新 更多