从昨天开始,00后大军已经就开始高考了,在网络上对这次高考的报道很多,很多都关注了今年的考生数据,并且用炫酷的图表展示。看着是不是有点小嫉妒,为什么图表还可以做得这么漂亮???是不是也想自己动手做一张???其实这些图表都可以用python制作出来的数据可视化的产物。答案当然是可以的啦
库
数据
经常见到或者使用的图表是柱状图和折线图,所以先从简单的入手 。
# 高考人数
gaokao_num = [940,940,...,375]
gaokao_num.reverse()
# 录取人数
luqu_num = [700,705,...,221]
luqu_num.reverse()
# 录取率
luqu_lev= [74.46,75,...,59]
luqu_lev.reverse()
import charts
options = {
'chart' : {'zoomType':'xy'},
#标题
'title' : {'text': '2000-2017年高考数据'},
#副标题
'subtitle': {'text': 'Source: edu.sina.com.cn'},
#x轴
'xAxis' : {'categories': ['2000',...,'2017']},
#y轴
'yAxis' : {'title': {'text': '万人/年'}},
}
series = [{
'type': 'column',
'name': '高考人数',
'data': gaokao_num
},{
'type': 'column',
'name': '录取人数',
'data': luqu_num
}
]
charts.plot(series, options=options, show='inline')
由于我的pyecharts
有点小问题,所以用了charts
进行处理,使用pyecharts
更加简单,这里就不重复了。
今年有 975万 考生,可以看出10-18年这段时间的高考人数是稳点的。但是人口基数大是没有办法的事,“千军万马过独木桥”这句话还真是有点应景哈。。。
如果上面的柱状图没有问题的话,那折线图就非常简单了,只是将type
由column
修改为line
就行了。
series = [{
'type': 'line',
'name': '录取率',
'data': luqu_lev,
'marker':{
'lineWidth':2,
'lineColor':'#90ed7d'
}
}
]
本来是将柱状图和折线图展示在一张图里面的,但是Y轴的值太大了,导致录取率的变化看起来不大,所以这里就将它们拆开了
先放上一张高考难度排行榜,想当年我也是从困难模式过来的。真的心疼江苏的孩子,好像数学又是葛军出题,看来又要上热搜了大江苏(手动滑稽)
现在开始利用pyecharts
制作地图类图表,看一下中国哪个省份的高考生最多
from pyecharts import Map
#处理数据
add =["北京",...,"西藏"]
num = [6.3,...,2.53]
dict_data = dict(zip(add,num))
data = [tuple(i) for i in zip(add,num)]
data_pro = data
geo = Map("各省高考人数分布", "data from : gaokao.eol.cn", title_color="#fff",
title_pos="center", width=1000,
height=600, background_color='#404a59')
attr, value = geo.cast(data_pro)
geo.add("", attr, value, visual_range=[0, 80],maptype='china',visual_text_color="#fff",
symbol_size=10, is_visualmap=True)
geo.render("各省高考分布.html")#生成html文件
geo#直接在notebook中显示
效果图:
看来河南和广东的考生压力有点大呀(!_!)
强烈建议使用pyecharts
,简单又好用,但是我这除了地图类可以使用pyecharts
之外,其他的好像都会出不来图,所以只能被逼无奈使用Charts
库了。
最后希望各位高考考生都能够考的理想的成绩。
更多内容可以关注下面的公众号:Python绿洲
源码地址:https://github.com/stormdony/python_demo/tree/master/GaoKao