社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 数据可视化 - 00 后高考大军

Python开发者 • 7 年前 • 664 次点击  

(点击上方公众号,可快速关注)


来源: stormdony

https://mp.weixin.qq.com/s/9QshHxDa8xZ3NZNQGsiu8A

00后大军高考结束了,网络上对这次高考的报道很多(毕竟00后小鲜肉嘛),很多都关注了今年的考生数据,并且用炫酷的图表展示。看着是不是有点小嫉妒,为什么图表还可以做得这么漂亮???是不是也想自己动手做一张???其实这些图表都可以用python制作出来的数据可视化的产物,所以当然是可以自己动手制作的啦

准备工作

  • charts

  • 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. 折线图

    如果上面的柱状图没有问题的话,那折线图就非常简单了,只是将typecolumn修改为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库了。
    最后希望各位高考考生都能够考的理想的成绩,然后就可以尽情的去嗨啦。。。ps:点击阅读原文可以查看源码

    【关于作者】


    stormdony:一个正在发育并且渴望成为一个有技术、有情怀的coder。


    【关于投稿】


    如果大家有原创好文投稿,请直接给公号发送留言。


    ① 留言格式:
    【投稿】+《 文章标题》+ 文章链接

    ② 示例:
    【投稿】《不要自称是程序员,我十多年的 IT 职场总结》:http://blog.jobbole.com/94148/

    ③ 最后请附上您的个人简介哈~



    看完本文有收获?请转发分享给更多人

    关注「Python开发者」,提升Python技能


    今天看啥 - 高品质阅读平台
    本文地址:http://www.jintiankansha.me/t/EGwL8p7cqP
    Python社区是高质量的Python/Django开发社区
    本文地址:http://www.python88.com/topic/13356
     
    664 次点击