import json
import pygal.maps.world     #引入世界地图
from pygal_maps_world.i18n import COUNTRIES     #引入世界个国家

def get_country_code(country_name):
    """根据国家的名称,获取国家的二位简称"""
    for code,name in COUNTRIES.items():
        if country_name==name:
            return  code
    return None #没有值就返回none

filename=r"population_data.json"
with open(filename) as f:   #f是打开文件的对象
    pop_data=json.load(f)   #
    #创建一个字典存储:简称:人口
    pop1,pop2,pop3={},{},{}
    #遍历每个国家的人口,只获取2010年的
    for pop in pop_data:
        if pop['Year']=='2010':
            country_name=pop['Country Name']
            quentity=int(float(pop["Value"]))
            code= get_country_code(country_name)
            if code:
                if quentity<10000000 :
                    pop1[code] =quentity
                elif quentity<100000000 :
                    pop2[code]=quentity
                else :
                    pop3[code]=quentity
            else:
                if quentity<10000000 :
                    pop1[country_name] =quentity
                elif quentity<100000000 :
                    pop2[country_name]=quentity
                else :
                    pop3[country_name]=quentity
#创建世界地图对象
wm=pygal.maps.world.World()
wm.title="2010 世界人口"
#方法add() ,它接受一个标签和一个列表或字典,后者包含我们要突出的国家的国别码--人口数。
# 每次调用add() 都将为指定的国家选择一种新颜色,并在图表左边显示该颜色和指定的标签
wm.add('0-10m',pop1 )
wm.add('10m-100m',pop2)
wm.add('>100m',pop3)

#提交到制定文件
wm.render_to_file('world_pop.svg')

 

posted on 2018-03-16 11:36  ghgxm520  阅读(228)  评论(0编辑  收藏  举报