如何绘制每个区域的计数直方图,每个区域都有一个间隔范围?

2024-06-06 19:14:31 发布

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

我有一个python目录,其中的键存储百分比范围:0\u5,5\u10,10\u15,…80\u85,85\u90,90\u95,95\u100。每个键的值是整个数据中的计数。我想用matplotlib绘制一个直方图,看看它的分布,将有20个箱子,每个箱子应标记其百分比范围,每个箱子之间将有一个小间距,使他们分开。你知道吗

我试过这个代码,它给我的直方图有20个箱子。但这不是我需要的。你知道吗

commutes = pd.Series(counts)
commutes.plot.hist(grid = False, bins = 20, rwidth = 0.8, color = 'tomato', edgecolor='gray', label = 'Type 1')

另外,我尝试了这个,它显示了一个错误:ValueError:weights应该与x具有相同的形状

pylab.hist(ratio.keys(), weights = ratio.values(), bins=range(20))

我就是这样创建目录的。变量counts存储700个百分比值的列表。你知道吗

for i in range(0,100,5):
    start = i
    end = i+5
    key = str(start)+"_"+str(end)
    number = 0
    for count in counts:
        if((count >= start) and (count < end)):
            number = number + 1
    ratio[key] = number

Tags: 目录numbercountrange直方图starthistend
1条回答
网友
1楼 · 发布于 2024-06-06 19:14:31

ratio.keys()ratio.values()属于dict_keysdict_values类型。我猜matplotlib正在尝试对它们应用np.array()np.asarray(),这并没有按预期工作,即它被转换为array(dict_keys([...]), dtype=object),而不是一个数字数组。你知道吗

一个简单的解决方法是首先将字典键和值转换为列表。你知道吗

pylab.hist(list(ratio.keys()), weights=list(ratio.values()), bins=range(len(ratio)))

相关问题 更多 >