将标签分配给直方图中的非空垃圾箱(使用matplotlib)

时间:2018-08-27 18:15:51

标签: python python-3.x matplotlib histogram

我正在尝试绘制一个分布数据,其中此列表中的大多数值接近一个数字(因此位于同一bin中),而某些值接近另一个数字。因此,直方图看起来好像有一个或两个巨大的垃圾箱/条形图和一两个两个小的垃圾箱/条形图,几乎看不到。 要做的是突出显示其中实际有数据的容器。我想使用标签来做。因此,在我的示例中,我只想为带有“ 1”的仓位和带有“ 10”的仓位添加标签,在这里我要显示此仓位中的值数量。这对于带有“ 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()

1 个答案:

答案 0 :(得分:0)

使用此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()

enter image description here