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

Creating a simple python bar chart / histogram using data in dictionary

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

(1到43之间,不是所有数字都是key)

我想制作直方图并绘制它,这样我就可以使用 matplotlib 在 X 轴上看到每个键,在 Y 轴上看到值。我该怎么做呢?我不想创建垃圾箱(需要单独涵盖所有值)并且没有任何教程真正有助于让我理解这些条款。我也没有时间,所以无法了解所有术语。执行此操作的最佳方法是什么?

如果你使用 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()

为了扩展@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")