zoukankan      html  css  js  c++  java
  • Python3 使用pygal 生成世界人口地图

      最近在看<python从入门到实践>,其中有一个例子是使用pygal制作世界人口地图,觉得挺有意思的,这里就记录下来了, 其实代码不是很复杂,使用环境环境python3.废话不多说,直接上代码

    country_codes.py

    返回当前国家的国别码

    需要安装pygal_maps_world  

    pip install pygal_maps_world

    # *- coding: utf-8 -*-
    from pygal_maps_world.i18n import COUNTRIES
    
    
    def get_country_code(country_name):
        for code, name in COUNTRIES.items():
            if name == country_name:
                return code
    
        return None
    
    
    if __name__ == '__main__':
        print(get_country_code('China'))

    world_pople.py

    需要安装pygal

    pip install pygal

    # *- coding: utf-8 -*-
    import json
    from country_codes import get_country_code
    import pygal_maps_world.maps as pm
    from pygal.style import RotateStyle
    
    
    with open('population_data.json') as f:
        data = json.load(f)
        cc_populations = {}
        for line in data:
            if line['Year'] == '2010':   #查找年分为2010年的
                country_name = line['Country Name']
                population = int(float(line["Value"]))
                code = get_country_code(country_name)
                if code:
                    cc_populations[code] = population
    
    #将国家按不同范围进行分组
    cc_pops_1, cc_pops_2, cc_pops_3 = {}, {}, {}
    for cc, pop in cc_populations.items():
        if pop < 10000000:
            cc_pops_1[cc] = pop
        elif pop < 100000000:
            cc_pops_2[cc] = pop
        else:
            cc_pops_3[cc] = pop
    
    #初始化一个world对象
    wm = pm.World()
    #设置分组颜色
    wm_style = RotateStyle('#336699')
    wm.title = 'World Population in 2010, by Country'
    wm.add('0-10m', cc_pops_1)
    wm.add('10m-1bn', cc_pops_2)
    wm.add('>1bn', cc_pops_3)
    wm.render_to_file('world_populations.svg')

    效果图

    结尾 

    可以看到图片中有许多地方是没有颜色填充,这个是因为在传入国家名称的时候在 from pygal_maps_world.i18n import COUNTRIES 无法找到当前国家的国别码,所以就没有将当前国家添加到cc_populations中.

    后续这个地方会完善的.

    附件:https://files-cdn.cnblogs.com/files/charles1ee/population_data.json.tar.gz

  • 相关阅读:
    准确获取URL地址参数
    你不知道的CSS
    axios拦截http拦截
    eclipse无法启动报错、打开Eclipse报错、Eclipse无法打开
    天猫优惠券领取
    微信公众号 订阅号,服务号,企业号区别
    WebService的两种方式SOAP和REST比较 (转)
    线程池
    秒杀应用的MySQL数据库优化
    关系型数据库和非关系型数据库
  • 原文地址:https://www.cnblogs.com/charles1ee/p/11150129.html
Copyright © 2011-2022 走看看