使用字典中的数据创建简单的 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")
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")