数据可视化简单尝试——成绩雷达图
2020-08-02 22:34
543 查看
在大概了解了Python读写各种文件的方法和数据可视化库matplotlib中一些API的使用后,花了一点时间写了这个带有实践意义的简单程序——成绩雷达图。
在刚开始时我曾尝试直接用输入各学科名称和成绩来存列表,发现运行过程中每次都要敲回车实在是很麻烦,也不利于大规模成绩查询和雷达图绘制,于是我想起来前面学了一些Python处理Excel文件的方法并用于实践。
代码如下:
#成绩雷达图绘制 import matplotlib.pyplot as plt import numpy as np import openpyxl as ox #中文显示 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False #初始创建学科名称name_courses和对应分数scores两个空列表用于后续储存 name_courses=[] scores=[] sheetname=input('请输入学生编号及姓名:') print('读入各学科及对应成绩中') #读入Excel文件中的学科名称及对应成绩 wb = ox.load_workbook('CoursesAndScores.xlsx') sheet = wb.get_sheet_by_name(sheetname) n_courses=sheet.max_row-1 print('共计'+str(n_courses)+'门课程\n') for i in range(2,sheet.max_row+1): name_courses.append(sheet['A'+str(i)].value) scores.append(sheet['B'+str(i)].value) print('成绩读入完成,绘制雷达图中') #根据学科数目确定角度偏转次数,为曲线重合在列表尾部再加入第一个元素 theta=np.linspace(0,2*np.pi,n_courses,endpoint=False) theta=np.append(theta,theta[0]) scores.append(scores[0]) #将学科名称和分数合成,一起标注在对应的角度 nameNscores=[] for i in range(n_courses): nameNscores.append(name_courses[i]+' '+str(scores[i]))#绘制雷达图 plt.polar(theta,scores,'c--',lw=1) plt.thetagrids(theta*180/np.pi,nameNscores,fontproperties='simhei') plt.fill(theta,scores,facecolor='c',alpha=0.2) plt.title(sheetname+'的成绩雷达图',verticalalignment='baseline',fontsize=12) plt.show() print('绘制完成')
看着其实是非常简单的逻辑加接口实现了一个以前感觉很厉害的东西,有点学习到东西的意味了。
这里强调两点:
#将学科名称和分数合成,一起标注在对应的角度 nameNscores=[] for i in range(n_courses): nameNscores.append(name_courses[i]+' '+str(scores[i]))
为了同时把学科名称和成绩显示清楚,我尝试过在thetagrids下功夫查了很久试了不少都只能标注一个列表,所以想到把这俩加起来,如果有其他解决办法,希望不吝赐教。
还有是下面这段代码一定要搞清楚
#中文显示 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False
这段代码能改变编码把中文以黑体输出在图上,如果没有会出现乱码。
下面是程序结果:
以上就是画出001号天下第一帅气的成绩雷达图!
对于便捷的整体输入在执行框里进行互动,我还没有好的方法;并且这个程序在我用Pyinstaller 打包成可执行exe文件时无法执行,我猜和他需要读取Excel文件有关,仍不清楚。
希望对上面及文章中间一共提出三个我的问题有想法的朋友,在评论区不吝赐教!
相关文章推荐
- 【数据可视化】简单实现雷达图matlab
- 大数据的可视化:bigvis包的简单尝试
- 基于javascript的简单数据可视化:DVisual
- 大数据可视化常用图表解读--简单说
- 《Python编程从入门到实践》项目2: 数据可视化15.2绘制简单的折线图
- Qt Charts - 让数据可视化更简单
- MongoDB在Windows下安装、Shell客户端的使用、Bson扩充的数据类型、MongoVUE可视化工具安装和简单使用、Robomongo可视化工具(2)
- seajs学习日志 简单尝试模板+数据合并、模块异步加载、非标准CMD模式定义define模块
- Python数据可视化正态分布简单分析及实现代码
- Caffe学习笔记(1):简单的数据可视化
- 4种更快更简单实现Python数据可视化的方法
- Qt Charts - 让数据可视化更简单
- 【Echarts】数据可视化_前端页面实现尝试
- Python爬取NBA球员生涯数据及简单可视化
- 30个数据可视化的简单图表工具
- 利用Excel进行简单的数据可视化
- 简单Python脚本实现数据导出Excel格式的尝试
- 简单又好用的数据可视化工具,错过就巨亏了
- 简单易学多维数据可视化R实现:神奇的卡通脸谱图Chernoff faces
- 简单的数据可视化