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