本篇内容介绍了“Python高考报考迁移图怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
第一步:整理数据
通过浏览器自带抓包工具得到数据接口:
https://voice.baidu.com/api/commonkvapi?aid=gaokao&data={"migration.list":{"descId":6}}&=
返回的为json格式数据
接下来我们需要用python模拟爬取数据,原数据如上图,最后要把数据整理成字典格式,字典的键为省份,字典的值为该省考生最想去的前十个省份,格式如下:
{'青海': ['青海', '北京', '陕西', '江苏', '四川', '湖北', '上海', '甘肃', '山东', '重庆']}
实现这一过程的python代码如下:
import requests import json url='https://voice.baidu.com/api/commonkvapi?aid=gaokao&data={"migration.list":{"descId":6}}&=' header = { 'User-Agent': 'Mozilla/5.0(Windows NT 6.1; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0' } response = requests.get(url, headers=header) results=json.loads(response.text)['data']['migration.list'] dict={} for i in results: top_10=[] province=i['province'] for m in i['list'][2]['list'][:10]: top_10.append(m['name']) dict[province]=top_10 print(dict)
第二步:用pyecharts画出迁徙图
本次用的是0.5.11版本的pyecharts
画迁徙图的公式为:
from pyecharts import GeoLines, Style style = Style() geo_style = style.add() citylines = GeoLines("2020年全国高考报考迁徙图", **style.init_style) citylines.add("迁徙图",[('北京','海南'),('北京','黑龙江'),('北京','西藏')],**geo_style) citylines.render()
把上面这段代码记住,以后需要画迁徙图直接往里面套就行了,下面给大家详细介绍一下参数作用:
1.style是图表初始化配置,例如图像大小、背景颜色、标题位置等;
2.style的add参数介绍:
is stack:是否堆积 is convert:x,y轴是否交换 is_legend_show:是否显示图例 legend_orient:图列方向,有'horizontal'(默认水平显示),'vertical'(垂直)可选 legend_pos:图例位置,有'left', 'center'(默认), 'right'可选 legend_text_size/color:图例名称字体大小/颜色 is_x/yaxis_show:是否显示x/y轴 x/yaxis_interval:x/y轴标签的显示间隔 x/yaxis_min/max:x/y轴刻度最小值/最大值 x/yaxis_label_textsize/textcolor:x/y轴标签字体大小/颜色 xaxis_rotate:x轴标签旋转角度 is_splitline_show:是否显示网格线 is_label_show:是否显示标签 label_pos:标签的位置,有'top'(默认), 'left', 'right', 'bottom','inside','outside'可选 label_text_color/size:标签字体颜色/大小 is_random:是否随机排列颜色列表 label_color:自定义标签颜色 mark_point/line:标记点/线,默认有'min', 'max', 'average'可选。可自定义标记点线,具体格式如:[{'coord': [x, y], 'name': '目标标记点'}],记住格式是一个列表 mark_point/line_symbol:标记点/线图形,默认为'pin'(点),有'circle'(圆形), 'rect'(正方形), 'roundRect'(圆角正方形), 'triangle'(三角形), 'diamond'(菱形), 'pin'(点), 'arrow'(箭头)可选 mark_point/line_symbolsize:标记点/线图形大小 mark_point/line_textcolor:标记点/线字体颜色
3.citylines表示定义1个迁徙图对象,可以添加标题以及初始化图标样式;
4.citylines.add可以添加标签、路线图以及图形样式
公式代码生成图形如下:
很基础的图形,没有任何样式。
套上述公式完成本次迁徙图,代码如下:
from pyecharts import GeoLines, Style style = Style( title_color="#fff", title_pos="center", width=1200, height=900, background_color="#08192D") geo_style = style.add( legend_orient="vertical", legend_pos="left", legend_top = "center", legend_text_color="#fff", is_label_show=True, line_curve=0.2, line_opacity=0.6, geo_effect_symbol="plane", geo_effect_symbolsize=8, label_pos="right", label_formatter="{b}", label_text_color="#eee", symbol_size = 0.2, label_text_size=8, label_color=['#24936E','#6A4C9C','#0089A7','#BEC23F','#D0104C']) citylines = GeoLines("2020年全国高考报考迁徙图", **style.init_style) for city in list(dict.keys()): line_=[] for i in dict[city]: line_.append(tuple((city,i))) citylines.add("{0}".format(city),line_,**geo_style) citylines.render()
看起来有点乱,不过可以通过点击左边标签选择显示单个省份,以河南为例:
通过分析,发现各地的考生想留在本省的居多,最后,我还想对这些迁徙图的目的地省市的出现次数进行排名,代码如下:
re_list=[] for city in list(dict.keys()): re_list+=dict[city] re_dict={} for i in list(set(re_list)): re_dict[i]=re_list.count(i) attr=sorted(re_dict.items(),key=lambda k:k[1],reverse=True) chart = Bar("最受喜爱省份排名", **style.init_style) chart.add("", [i[0] for i in attr], [i[1] for i in attr], is_stack=True,xaxis_rotate=45) chart.render('最受喜爱省份排名.html')
“Python高考报考迁移图怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。