Python 数据可视化 - 00 后高考大军
每年高考相关报道里,最容易引起注意的往往不是一大段文字,而是那些一眼就能看明白趋势的图表。对于练习 Python 数据可视化来说,高考人数、录取人数和地区分布都是很适合上手的示例数据。
这篇文章用一个完整的小案例,演示如何把同一组高考数据做成 3 类常见图表:
- 柱状图
- 折线图
- 地图
准备工作
- 库
chartspyecharts
- 数据
- 示例数据直接整理自公开网页统计数据
使用前说明
本文保留的是当时可运行的旧版写法,尤其是地图部分更接近旧版 pyecharts API。如果你的本地环境是新版 pyecharts,部分接口可能需要按当前官方文档稍作调整。
常见类
经常见到或者使用的图表是柱状图和折线图,所以先从简单的入手 。
1. 柱状图
# 高考人数
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年这段时间的高考人数是稳定的,毕竟人口基数大是没有办法的事。“千军万马过独木桥”这句话还真是有点应景哈。。。
2. 折线图
如果上面的柱状图没有问题的话,那折线图就非常简单了,只是将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中显示
效果图: 看来河南和广东的考生压力有点大呀(!_!)<
如何检查图表是否正常生成
如果你是在 notebook 环境里运行,通常会直接显示结果;如果是在本地脚本环境里运行,更建议额外确认两点:
- HTML 文件是否成功生成
- 浏览器打开后地图是否正常加载
例如地图部分至少要看到:
ls 各省高考分布.html
如果文件已经生成,但页面空白,优先检查 pyecharts 版本和前端资源是否正确加载。
多说一点
强烈建议使用pyecharts,简单又好用,但是我这除了地图类可以使用pyecharts之外,其他的好像都出不来图,所以只能被逼无奈使用Charts库了。
最后希望各位高考考生都能够考的理想的成绩,然后就可以尽情的去嗨啦。。。
延伸阅读
- 原文作者:春江暮客
- 原文链接:https://www.bobobk.com/320.html
- 版权声明:本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。