将标签指定给直方图中的非空容器(使用matplotlib)

2024-04-25 21:35:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图绘制一个分布数据,其中列表中的大多数值接近一个数字(因此在同一个bin中),而一些值接近另一个数字。所以柱状图看起来像是有一个或两个巨大的箱子/酒吧和一个或两个小的,几乎看不见。 我们要做的是突出显示实际包含数据的箱子。我想用标签做。因此,在我的示例中,我只想为带有“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()

Tags: of数据number列表databin绘制plt
1条回答
网友
1楼 · 发布于 2024-04-25 21:35:22

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

相关问题 更多 >