最近在看<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

Python3 使用pygal 生成世界人口地图的更多相关文章

  1. Python Pygal绘制世界人口地图

    数据集可在 https://datahub.io/JohnSnowLabs/population-figures-by-country 下载 #coding=utf-8 import json fro ...

  2. python绘制世界人口地图

    最近看了<python编程:从入门到实践>,里边设计的项目拿来学习学习,绘制世界人口地图. 首先,下载数据,http://data.okfn.org/ ,从这里下载population_d ...

  3. 使用python绘制世界人口地图及数据处理

    本篇我们来说:下载和处理json格式的文件,并通过pygal中的地图工具来实现数据可视化 ------------------------------------------------------- ...

  4. Python3+qrcode+zxing生成和识别二维码教程

    一.安装依赖库 pip install qrcode pillow image zxing pillow是python3中PIL的代替库,image是生成图版需要用到的库 安装image时报错“Cou ...

  5. python3如何随机生成大数据存储到指定excel文档里

    本次主要采用的是python3的第三方库xlwt,来创建一个excel文件.具体步骤如下: 1.确认存储位置,文件命名跟随时间格式 2.封装写入格式 3.实现随机数列生成 4.定位行和列把随机数写入 ...

  6. Python3和HTMLTestRunner生成html测试报告

    1.测试环境: Python3.5+unittest+HTMLTestRunner 2.下载HTMLTestRunner.py文件 下载地址 http://tungwaiyip.info/softwa ...

  7. Python3使用random生成随机数

    本文介绍使用Python3中的random库生成随机数.随机小数.随机序列.随机字符串以及扑克洗牌等方法. 一.生成随机浮点数或小数 1.#生成0-1之间的浮点数 import random rnd ...

  8. python3使用HTMLTestRunner生成测试报告

    自动化测试运行完了需要直观的了解测试结果,需要用到第三方的模块HTMLTestRunner. 一:下载 HTMLTestRunner 下载路径:https://pypi.python.org/pypi ...

  9. python3使用kivy生成安卓程序

    技术背景 虽然现在苹果占据了很大一部分的市场,但是从销量数据来看,安卓还是占据了人口的高地.这里我们介绍一个用python的kivy+buildozer来进行安卓APP开发的简单教程,从整个过程中来看 ...

随机推荐

  1. git一些常用配置

    1. git config git config 分为全局和局部 全局:git config --glabol 局部:git config 最终会生成配置文件,一般在~/.gitconfig. 2. ...

  2. adb shell monkey--APP

  3. mybatis设置Map空值返回

    mybatis时,设置Map返回,当值为空时属性也会没有 在application.properties中加入下面配置,将会解决这个问题. #当查询数据为空时字段返回为null,不加这个查询数据为空时 ...

  4. 反向代理Nginx

    引用:https://baijiahao.baidu.com/s?id=1600687025749463237&wfr=spider&for=pc 参考下图,正向代理用途:Client ...

  5. 自定义控件之Region区域

    构造Region 直接构造 public Region(Region region) //复制一个同样的Region变量 public Region(Rect r) public Region(int ...

  6. String,StringBuilder 和StringBuffer区别

    1. String 和字符串缓冲区的区别是: String 是一个不可变的字符序列 , 而字符串缓冲区是可变的 2. StringBuffer 是一个线程安全的可变字符序列 ; 线程安全对应的效率低 ...

  7. selenium WebDriver 清空input的方式

    做自动测试时,经常会出现某些文本框带有默认值的形式,此时我们为了输入我们预期的数据,就需要我们对默认值清楚后做处理.本文章提供四种方法 //方法1 public static void setElem ...

  8. 002-demo业务说明

    一.demo基本业务功能介绍 只是demo,无完整功能,不断重构系统,以搭建 高可扩展性.高性能.大数据.高并发.分布式的系统架构 客户管理.商品管理.购物车.订单管理.库存管理 二.基本数据字典 说 ...

  9. 123457123456#0#-----com.threeapp.HeiXIanBuNengPeng01----黑线不能碰

    -com.threeapp.HeiXIanBuNengPeng01----黑线不能碰

  10. PAT 甲级 1053 Path of Equal Weight (30 分)(dfs,vector内元素排序,有一小坑点)

    1053 Path of Equal Weight (30 分)   Given a non-empty tree with root R, and with weight W​i​​ assigne ...