【问题标题】:Histogram bins size to equal 1 day - pyplot直方图箱大小等于 1 天 - pyplot
【发布时间】:2017-12-19 16:11:17
【问题描述】:
我有这个 0 年车龄的汽车的交货时间列表。该列表包含近 20,000 个交货天数,并且重复了许多天。我的问题是如何让直方图将 bin 大小显示为 1 天。我已通过以下方式将 bin 大小设置为唯一交货天数:
len(set(list))
但是当我生成直方图时,0 交货天数的频率超过 5000,但是当我执行list.count(0) 时,它返回 4500。
【问题讨论】:
-
如果使用pyplot.hist,bins 关键字可以传递array-like,它表示 bin 边缘。详情请参阅documentation。
标签:
python-3.x
matplotlib
statistics
histogram
【解决方案1】:
箱的数量将由天数决定,直到最大可能的天数。
假设daylist 是您想要直方图的列表(永远不要调用列表list,因为这会覆盖具有相同名称的python 命令),您将使用该列表的最大值并创建一系列箱,例如
maxi = max(daylist)
bins = range(0, maxi)
plt.hist(daylist, bins=bins)
或者,如果你想使用 numpy,
bins = np.arange(0,np.max(daylist))
plt.hist(daylist, bins=bins)
【解决方案2】:
正如您所指出的, len(set(list)) 是“交货天数”变量的唯一值的数量。这与 bin 大小不同。它是不同垃圾箱的数量。我会使用“bin size”来描述一个 bin 中的项目数量; “bin count”将是 bin 数量的更好名称。
如果要生成直方图,假设原始天数列表称为 days_list,一个快速的高级方法是:
- 创建一个新集 unique_days = set(days_list)
- 在 unique_days 中迭代每个值日
- 对于当天,在
直方图等于 days_list.count(day)。这会告诉你号码
当前交货天数的“天”值出现在
days_list 交货时间列表。
这有意义吗?
如果问题不是您手动计算直方图错误,而是 pyplot 做错了什么,那么如果您包含一些有关如何使用 pyplot 的代码将会有所帮助。