美文网首页
JSON格式人口数据制作地图

JSON格式人口数据制作地图

作者: MingSha | 来源:发表于2017-06-22 09:53 被阅读0次

    在《Pygal制作地图》的文章中,可以通过不同的方式显示数据,不过数据量偏小,如果想要显示大显的数据,我们可以通过JSON文件读取数据并显示在交互性地图上。

    Paste_Image.png

    代码如下:

    import json
    import pygal
    from pygal_maps_world.i18n import COUNTRIES
    
    # 得到Country Code
    def get_country_code(country_name):
        for code, name in COUNTRIES.items():
            if name == country_name:
                return code
        return None
    
    # 读取JSON数据
    filename = 'population_data.json'
    with open(filename) as f:
        pop_data = json.load(f)
    
    # 得到字典文件显示格式是 "cn": 1331380000
    poplist = {}
    for pop_dict in pop_data:
        if pop_dict['Year'] == '2009':
            country_name = pop_dict['Country Name']
            population = int(float(pop_dict['Value']))
            code = get_country_code(country_name)
            if code:
                poplist[code] = population
            
    # 显示数据
    wm = pygal.maps.world.World()
    wm.title = '2010 World Population'
    wm.add('2010', poplist)
    wm.render_to_file('world.svg')
    

    所有的国家显示一种颜色没有分组,效果不是很好。如果根据人口数量的不同进行分组,则可以有更好的交互性。

    Paste_Image.png

    改动的代码如下:

    
    #根据人口数量将所有的国家按人口数量分组分组
    poplist1, poplist2, poplist3 = {}, {}, {}
    for c, p in poplist.items():
        if p < 10000000:
            poplist1[c] = p
        elif p < 100000000:
            poplist2[c] = p
        else:
            poplist3[c] = p
    
           
    # 显示数据
    wm = pygal.maps.world.World()
    wm.title = '2010 World Population'
    # wm.add('2010', poplist)
    wm.add('0-10m', poplist1)
    wm.add('10m-1bn', poplist2)
    wm.add('>1bn', poplist3)
    wm.render_to_file('world.svg')
    

    相关文章

      网友评论

          本文标题:JSON格式人口数据制作地图

          本文链接:https://www.haomeiwen.com/subject/hlpxcxtx.html