使用字典中的数据创建简单的python条形图/直方图

时间:2015-03-05 06:39:12

标签: python matplotlib histogram histogram2d

freq = {1: 1000, 2: 980, 4: 560, ... 40: 3, 41: 1, 43: 1}

(介于1到43之间,并非所有数字都是键)

我想制作一个直方图并绘制它,这样我就可以看到X轴上的每个键,以及使用matplotlib在Y轴上的值。我该怎么做呢?我不希望创建垃圾箱(需要单独涵盖所有值),没有教程真的有助于让我理解这些术语。我的时间也很短,所以无法进入所有的术语。这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

要扩展@ Tzach的评论,这是从您的数据创建bar chart的最小示例:

import matplotlib.pyplot as plt
freq = {1: 1000, 2: 980, 4: 560, 40: 3, 41: 1, 43: 1}
fig, ax = plt.subplots()
ax.bar(freq.keys(), freq.values())
fig.savefig("bar.png")

enter image description here

答案 1 :(得分:2)

如果您使用matplotlib,则可以创建2D histograms

>>> import matplotlib.pyplot as plt
>>> freq = {1: 1000, 2: 980, 4: 560,40: 3, 41: 1, 43: 1}
>>> x = list(freq.keys())
>>> y = list(freq.values())
>>> plt.hist2d(x,y)
(array([[ 0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  2.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 3.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]]), array([  1. ,   5.2,   9.4,  13.6,  17.8,  22. ,  26.2,  30.4,  34.6,
        38.8,  43. ]), array([    1. ,   100.9,   200.8,   300.7,   400.6,   500.5,   600.4,
         700.3,   800.2,   900.1,  1000. ]), <matplotlib.image.AxesImage object at 0xb475012c>)
>>> plt.show()

histogram 2d