最近在看<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. Jenkins中插件下载失败的解决办法

    插件下载失败原因:通过国外服务器下载镜像,有较高的失败率,某些插件下载失败或者中断会引起其他有依赖关系的插件也下载失败 解决方案:1. 使用VPN.2. Jenkins镜像地址改为国内镜像地址:系统管 ...

  2. spring boot 之 如何创建spring boot项目

    创建spring boot的方式有非常多,今天我们使用maven来进行创建spring boot项目,因为maven使用的非常广泛,也很好用,很多IDE也都支持maven. 1 创建maven项目 1 ...

  3. js的一些兼容性易错的的问题

    一.属性相关 我们通常把特征(attribute)和属性(property)统称为属性,但是他们确实是不同的概念,特征(attribute)会表现在HTML文本中,对特征的修改一定会表现在元素的out ...

  4. openstack 基镜像展开过程

  5. windows7 10 windows2008 windws2012 nfs客户端的安装

    servermanagercmd.exe -install FS-NFS-Services   for windows2008 windows2012 在添加功能角色-添加文件打印服务选择nfs客户端 ...

  6. MySQL 8.0: From SQL Tables to JSON Documents (and back again)

    MySQL 8.0: From SQL Tables to JSON Documents (and back again) | MySQL Server Bloghttps://mysqlserver ...

  7. [webpack]深入理解proxy代理

    1.一个基本的代理 module.exports = { //... devServer: { proxy: { '/api': 'http://localhost:3000' } } }; /api ...

  8. angular 中*ngIf 和*ngSwitch判断语句

    <div style="text-align:center"> <h1> Welcome to {{ title }}! </h1> <p ...

  9. matlab学习——05插值和拟合(一维二维插值,拟合)

    05插值和拟合 1.一维插值 (1) 机床加工零件,试用分段线性和三次样条两种插值方法计算.并求x=0处的曲线斜率和13<=x<=15范围内y的最小值. x0=[0 3 5 7 9 11 ...

  10. Delphi中动态加载TreeView信息

    unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...