【发布时间】:2017-07-01 23:23:01
【问题描述】:
我有一个数据集,我已经设法将其分成 250 个间隔,但我很难正确地绘制这些值。我看过了
python plot simple histogram given binned data
How to make a histogram from a list of data
但就我而言,我得到的只是一条垂直线。
作为参考,我的分箱数据如下所示:
(0, 250] 2
(250, 500] 1
(500, 750] 5
(750, 1000] 13
(1000, 1250] 77
(1250, 1500] 601
(1500, 1750] 1348
(1750, 2000] 3262
(2000, 2250] 3008
(2250, 2500] 5118
(2500, 2750] 4576
(2750, 3000] 5143
(3000, 3250] 3509
(3250, 3500] 4390
(3500, 3750] 2749
(3750, 4000] 2794
(4000, 4250] 1391
(4250, 4500] 1753
(4500, 4750] 1099
(4750, 5000] 1592
(5000, 5250] 688
(5250, 5500] 993
(5500, 5750] 540
(5750, 6000] 937
(6000, 6250] 405
(6250, 6500] 572
(6500, 6750] 202
(6750, 7000] 369
(7000, 7250] 164
(7250, 7500] 231
...
(7750, 8000] 285
(8000, 8250] 55
(8250, 8500] 116
(8500, 8750] 29
(8750, 9000] 140
(9000, 9250] 31
(9250, 9500] 68
(9500, 9750] 20
(9750, 10000] 132
(10000, 10250] 15
(10250, 10500] 29
(10500, 10750] 21
(10750, 11000] 73
(11000, 11250] 26
(11250, 11500] 36
(11500, 11750] 21
(11750, 12000] 74
(12000, 12250] 5
(12250, 12500] 50
(12500, 12750] 13
(12750, 13000] 34
(13000, 13250] 4
(13250, 13500] 45
(13500, 13750] 14
(13750, 14000] 53
(14000, 14250] 6
(14250, 14500] 17
(14500, 14750] 7
(14750, 15000] 79
(15000, 10000000] 256
最后一个区间包含大于 15,000 的所有值。我已将上述值放在 list 中,然后尝试绘制:
bins = [i for i in range(0, 15001, 250)]
bins.append(10000000)
categories = pd.cut(data["price"], bins)
price_binned = list(pd.value_counts(categories).reindex(categories.cat.categories))
plt.hist(price_binned)
生成一个包含 12 个 bin 的直方图。添加bin 参数
plt.hist(price_binned, bins=(bin_num+1))
生成一个直方图,其中左侧有一条非常高的垂直线。最后,我正在考虑添加plt.xticks(bins),但后来我得到了一个没有产生任何结果的图表。
我是否可以生成一个直方图,其中 x 轴是 bin 值,y 轴是 bin 中的值?
使用plt.bar()
使用不带 bin 参数的 plt.hist()
将plt.hist() 与 bin=bins 一起使用
使用seaborn
【问题讨论】:
-
您显示的数据已经是直方图。因此,目前还不清楚您的目标是什么。
-
我想要数据的可视化表示,而不是仅仅将其作为列表
-
当然,但是视觉表示与您已有的直方图中应该有什么不同?
-
如果您的数据已经是直方图形式,那么您应该能够使用 pyplot.bar() 图表并将 bins 列表传递给 tick_label 参数
标签: python matplotlib plot