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')