最近在看<python从入门到实践>,其中有一个例子是使用pygal制作世界人口地图,觉得挺有意思的,这里就记录下来了, 其实代码不是很复杂,使用环境环境python3.废话不多说,直接上代码

country_codes.py

返回当前国家的国别码

需要安装pygal_maps_world

pip install pygal_maps_world

# *- coding: utf-8 -*-
from pygal_maps_world.i18n import COUNTRIES def get_country_code(country_name):
for code, name in COUNTRIES.items():
if name == country_name:
return code return None if __name__ == '__main__':
print(get_country_code('China'))

world_pople.py

需要安装pygal

pip install pygal

# *- coding: utf-8 -*-
import json
from country_codes import get_country_code
import pygal_maps_world.maps as pm
from pygal.style import RotateStyle with open('population_data.json') as f:
data = json.load(f)
cc_populations = {}
for line in data:
if line['Year'] == '': #查找年分为2010年的
country_name = line['Country Name']
population = int(float(line["Value"]))
code = get_country_code(country_name)
if code:
cc_populations[code] = population #将国家按不同范围进行分组
cc_pops_1, cc_pops_2, cc_pops_3 = {}, {}, {}
for cc, pop in cc_populations.items():
if pop < 10000000:
cc_pops_1[cc] = pop
elif pop < 100000000:
cc_pops_2[cc] = pop
else:
cc_pops_3[cc] = pop #初始化一个world对象
wm = pm.World()
#设置分组颜色
wm_style = RotateStyle('#336699')
wm.title = 'World Population in 2010, by Country'
wm.add('0-10m', cc_pops_1)
wm.add('10m-1bn', cc_pops_2)
wm.add('>1bn', cc_pops_3)
wm.render_to_file('world_populations.svg')

效果图

结尾

可以看到图片中有许多地方是没有颜色填充,这个是因为在传入国家名称的时候在 from pygal_maps_world.i18n import COUNTRIES 无法找到当前国家的国别码,所以就没有将当前国家添加到cc_populations中.

后续这个地方会完善的.

附件:https://files-cdn.cnblogs.com/files/charles1ee/population_data.json.tar.gz

最新文章

  1. Apache Curator: Zookeeper客户端
  2. Winform 生成不需要安装的exe可执行文件 ILMerge使用
  3. DELL vostro V5460 装mSATA 半高SSD硬盘后装win8.1系统
  4. Android应用与系统安全防御
  5. http错误和异常处理,认证和代理设置
  6. spring @qualifier注解
  7. Linux常用命令收集
  8. 【技术文档】《算法设计与分析导论》R.C.T.Lee等&#183;第5章 树搜索策略
  9. phpcms 一些bug
  10. 我学的是设计模式的视频教程——装饰图案,装饰图案VS代理模式
  11. jetty和tomcat的区别
  12. bzoj 4826: [Hnoi2017]影魔 [主席树 单调栈]
  13. Prefix tree
  14. Android一些问题
  15. python面试题之python下多线程的限制
  16. Python select模块学习
  17. Windows自动联网修复系统损坏文件
  18. hdu 1014 Uniform Generator 数论
  19. linux 时间设置
  20. 基于python中staticmethod和classmethod的区别(详解)

热门文章

  1. elasticsearch启动错误
  2. Delphi BASE64单元EncdDecd的修改
  3. TynSerial文件序列(还原)
  4. mysql的配置文件解释
  5. Linux shell脚本 (十二)case语句
  6. @Deprecated注解
  7. php实现手机定位功能的实例
  8. 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_09-前端显示当前用户-需求分析
  9. Qt编写自定义控件41-自定义环形图
  10. 123456---com.twoapp.ErTongNongChangPinTu---儿童农场拼图