1、提取相关数据
import json
import pygal
from country_codes import get_country_code
filename="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
wm=pygal.Worldmap()
wm.title="World population in 2010,by Country"
wm.add('2010',cc_populations)
wm.render_to_file("world_population.svg")
from pygal.i18n import COUNTRIES
def get_country_code(country_name):
"""根据指定的国家,返回pygal使用的两个字母的国别码"""
for code,name in COUNTRIES.items():
if name==country_name:
return code
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))
wm_style=RS('#336699',base_style=LCS)
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")