首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带等级的直方图

带等级的直方图
EN

Stack Overflow用户
提问于 2019-05-23 12:08:55
回答 2查看 988关注 0票数 3

我需要在Python中制作一个带有分数分布的直方图。我使用matplotlib。

代码语言:javascript
复制
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]
data.sort
plt.hist(data)
plt.ylabel('Count')
plt.show()

直方图还可以,但我不喜欢python用来在x轴上显示分数的分组。我想知道是否有一种方法(一些hist参数或另一个绘图库),我可以为每个单独的等级设置条形图?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-23 12:47:19

它可能有点繁琐,但是一旦你有了正确的参数,你几乎可以定制所有的东西。主要的问题似乎是使用rwidth正确地获取bins和设置基本宽度。

也许这更接近你所希望的:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-05-23 16:47:28

由于您希望使用频率条形图,因此我个人建议使用Counter模块来计算频率。它返回一个字典,它的关键字是成绩,值是它们对应的频率。从集合导入计数器将matplotlib.pyplot作为plt导入

代码语言:javascript
复制
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()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56267959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档