我需要在Python中制作具有等级分布的直方图。我使用matplotlib。
db_instances_map:
!Database DB_01:
host: db01.example.com
port: 1521
user: foo
pass: bar
可以使用直方图,但是我不喜欢python用于在x轴上显示等级的分组。我想知道是否有一种方法(一些历史参数或另一个绘图库),在其中我可以为每个单独的成绩设置条形?
谢谢。
答案 0 :(得分:0)
这可能有点麻烦,但是一旦有了正确的论点,您就可以自定义几乎所有内容。主要问题似乎是正确设置bins
并使用rwidth
设置基本宽度。
也许这更接近您的期望:
import matplotlib.pyplot as plt
plt.title('Histogram Grades')
data = [1, 3, 10, 8, 9, 5, 3, 7, 7, 3, 1, 3, 10, 8, 9, 5, 3, 7, 7, 3, 2]
plt.hist(data, rwidth=.8, bins=np.arange(min(data), max(data)+2) - 0.5)
plt.xticks(np.arange(min(data), max(data)+1, 1.0))
plt.ylabel('Count')
plt.show()
答案 1 :(得分:0)
由于您需要频率的条形图,因此我个人建议使用Counter
模块来计数频率。它返回一个字典,其键是等级,值是其相应的频率。
导入matplotlib.pyplot作为plt
从馆藏进口柜台
data = [1, 3, 10, 8, 9, 5, 3, 7, 7, 3, 1, 3, 10, 8, 9, 5, 3, 7, 7, 3]
freqs = Counter(data)
# Counter({1: 2, 3: 6, 10: 2, 8: 2, 9: 2, 5: 2, 7: 4})
plt.bar(freqs.keys(), freqs.values())
plt.ylabel('Count')
plt.title('Histogram Grades')
plt.show()