读取scores.txt文件生成数组。 4.根据该数组数据绘图,该图包括四个小图,图一为各个科目的平均分的竖向条形图,图二为各个学生平均分和python成绩关系的散点图,图三为python成绩各分段的学生人数占比(优秀(90-100分)、良好(70-90分)、及格(60-70分)、不及格(小于60分)饼图,图四为30位学生的总分排名的横向条形图。
时间: 2024-01-22 20:04:08 浏览: 82
JAVA基于Arrays.sort()实现数组升序和降序
好的,以下是Python代码实现:
```python
import matplotlib.pyplot as plt
import numpy as np
# 读取scores.txt文件生成数组
with open("scores.txt", "r") as f:
students = []
for line in f:
scores = list(map(int, line.strip().split()))
students.append(scores)
students = np.array(students)
# 绘制图一:各个科目的平均分的竖向条形图
subjects = ["语文", "数学", "英语", "Python"]
mean_scores = np.mean(students, axis=0)
plt.bar(subjects, mean_scores)
plt.title("各个科目的平均分")
plt.xlabel("科目")
plt.ylabel("平均分")
plt.show()
# 绘制图二:各个学生平均分和python成绩关系的散点图
x = students[:, 3] # Python成绩
y = np.mean(students[:, :3], axis=1) # 语文、数学、英语平均分
plt.scatter(x, y)
plt.title("各个学生平均分和Python成绩关系")
plt.xlabel("Python成绩")
plt.ylabel("平均分")
plt.show()
# 绘制图三:Python成绩各分段的学生人数占比饼图
bins = [0, 60, 70, 90, 100] # 分数段
labels = ["不及格", "及格", "良好", "优秀"]
counts, _ = np.histogram(students[:, 3], bins=bins)
plt.pie(counts, labels=labels, autopct='%1.1f%%')
plt.title("Python成绩各分段的学生人数占比")
plt.show()
# 绘制图四:30位学生的总分排名的横向条形图
total_scores = np.sum(students, axis=1)
rank = np.argsort(-total_scores) # 降序排列
plt.barh(np.arange(1, 31), total_scores[rank])
plt.title("30位学生的总分排名")
plt.xlabel("总分")
plt.ylabel("排名")
plt.show()
```
这段代码会读取scores.txt文件中的成绩数据,并将其转化成numpy数组students。然后会绘制四个图表:各个科目的平均分的竖向条形图、各个学生平均分和Python成绩关系的散点图、Python成绩各分段的学生人数占比饼图和30位学生的总分排名的横向条形图。
阅读全文