ADD file via upload

main
hnu202410040228 3 months ago
parent f55e591b44
commit bb802d882c

@ -0,0 +1,97 @@
#数据可视化
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='simHei' #显示汉字
plt.rcParams['axes.unicode_minus'] = False #显示负号
############################################################
#1. 折线图可视化
try:
x=int(input('请输入考试的次数:') )
y=list(map(float, input('请输入学生每次考试成绩(用空格分隔): ').split()))
except:
print("输入格式错误!请确保输入数字")
exit()
if len(y)!=x:
print(f"错误:考试次数应为{x}次,但输入了{len(y)}个成绩")
exit()
x = list(range(1, x+1))
plt.figure('fig1') # 命名
plt.title('学生成绩的变化趋势')
plt.plot(x,y,color='r',label='学生成绩')
plt.legend()
plt.xlabel('考试次数')
plt.ylabel('学生成绩')
plt.savefig('成绩趋势.png')
plt.show()
###############################################################
#2. 两个人之间的成绩比较
try:
x=int(input('请输入考试的次数:') )
y1=list(map(float, input('请输入第一个学生每次考试成绩(用空格分隔): ').split()))
y2=list(map(float, input('请输入第二个学生每次考试成绩(用空格分隔): ').split()))
except ValueError:
print("输入格式错误!请确保输入数字")
exit()
if len(y1)!=x or len(y2)!=x:
print(f"错误:考试次数应为{x}次,但输入了错误个数的成绩")
exit()
x = list(range(1, x+1))
plt.figure('fig2') # 命名第二个图
plt.title('两者的成绩比较')
plt.plot(x,y1,'r-v',label='第一个人的成绩')
plt.plot(x,y2,'b--v',label='第二个人的成绩')
plt.legend()
plt.xlabel('考试次数')
plt.ylabel('学生成绩') # 创建成绩比较表格
plt.savefig('成绩比较.png')
plt.show()
##################################################################
#3. 班级中的整体情况(饼状图)
try:
count_grades=input('请输入考试各个分段的人数:').split() # 每个分段用空格隔开
ladder=input('输入各个分段标签:').split() # 例为优秀,良好......
explode = list(map(float, input('请输入突出程度0-1用空格分隔: ').split())) # 输入每个分段的突出程度
if len(count_grades) != len(ladder) or len(ladder) != len(explode):
print(f"错误:输入数量不匹配(人数:{len(count_grades)} 标签:{len(ladder)} 突出:{len(explode)}")
exit()
if sum(count_grades) == 0:
print("错误总人数不能为0")
exit()
except ValueError :
print("输入格式错误")
exit()
plt.figure('fig3')
plt.title('班级成绩的整体情况')
plt.pie(ladder,count_grades,explode,labels=ladder,autopct='%1.1f%%')
plt.legend() # 创建分数饼状图
plt.savefig('分数状况.png')
plt.show()
#4. 各个阶段分数的人数显示(柱状图)
try:
count_grades=input('请输入考试各个分段的人数:').split() # 每个分段用空格隔开
ladder=input('输入各个分段标签:').split()
if len(count_grades) != len(ladder):
print(f"错误:输入数量不匹配(人数:{len(count_grades)} 标签:{len(ladder)} ")
exit()
if sum(count_grades) == 0:
print("错误总人数不能为0")
exit()
except ValueError :
print("输入格式错误")
exit()
plt.figure('fig4')
plt.bar(ladder,count_grades,width=0.5,bottom=0)
x.label('分数阶段')
y.label('分数阶段的人数')
for x,y in zip(ladder,count_grades) :
plt.text(ladder,count_grades,count_grades,ha='center',va='bottom')
plt.savefig('阶段分数显示.png') # 创建分数柱状图
plt.show()
Loading…
Cancel
Save