freq = {1: 1000, 2: 980, 4: 560, ... 40: 3, 41: 1, 43: 1}
(介于1到43之间,并非所有数字都是键)
我想制作一个直方图并绘制它,这样我就可以看到X轴上的每个键,以及使用matplotlib在Y轴上的值。我该怎么做呢?我不希望创建垃圾箱(需要单独涵盖所有值),没有教程真的有助于让我理解这些术语。我的时间也很短,所以无法进入所有的术语。这样做的最佳方式是什么?
答案 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")
答案 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()