python处理JSON格式数据并利用pygal绘制世界地图

来源:互联网 发布:卡通农场有mac版吗 编辑:程序博客网 时间:2024/05/20 01:34

1、提取相关数据

#world_population.py#  coding=gbkimport jsonimport pygalfrom country_codes import get_country_codefilename="population_data.json"#将数据加载到列表中with open(filename) as f:    pop_data=json.load(f)#创建一个包含人口数量的字典cc_populations={}for pop_dict in pop_data:    if pop_dict['Year']=='2010':        country=pop_dict['Country Name']        population=int(float(pop_dict['Value']))        code=get_country_code(country)        if code:            cc_populations[code]=population#创建Worldmap实例wm=pygal.Worldmap()wm.title="World population in 2010,by Country"wm.add('2010',cc_populations)wm.render_to_file("world_population.svg")
#country_codes.py#  coding=gbkfrom pygal.i18n import COUNTRIESdef get_country_code(country_name):    """根据指定的国家,返回pygal使用的两个字母的国别码"""    for code,name in COUNTRIES.items():        if name==country_name:            return code        #如果没有找到指定国家,就返回None    return None

这里写图片描述

2、根据人口数量将国家分组

#根据人口数量将所有国家分成三组cc_pop_1,cc_pop_2,cc_pop_3={},{},{}for cc,pop in cc_populations.items():    if pop<10000000:        cc_pop_1[cc]=pop    elif pop<1000000000:        cc_pop_2[cc]=pop    else:        cc_pop_3[cc]=pop#看看每个分组分别包含多少国家print(len(cc_pop_1),len(cc_pop_2),len(cc_pop_3))#让pygal使用一种基色,样式RotateStyle的一个实参为十六进制的RGB颜色,为一个以#打头的字符串,后面跟着六个字符,每两个分别为红绿蓝分量wm_style=RS('#336699',base_style=LCS)#创建Worldmap实例wm=pygal.Worldmap(style=wm_style)wm.title="World population in 2010,by Country"wm.add('0-10m',cc_pop_1)wm.add('10m-1bn',cc_pop_2)wm.add('>1bn',cc_pop_3)wm.render_to_file("world_population.svg")

这里写图片描述

原创粉丝点击