我需要在Python中制作一个带有分数分布的直方图。我使用matplotlib。
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参数或另一个绘图库),我可以为每个单独的等级设置条形图?
提前谢谢。
发布于 2019-05-23 12:47:19
它可能有点繁琐,但是一旦你有了正确的参数,你几乎可以定制所有的东西。主要的问题似乎是使用rwidth正确地获取bins和设置基本宽度。
也许这更接近你所希望的:
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()

发布于 2019-05-23 16:47:28
由于您希望使用频率条形图,因此我个人建议使用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()

https://stackoverflow.com/questions/56267959
复制相似问题