#数据可视化 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()