Pygal之世界地图绘制from pygal.i18n import COUNTRIES 报错的解决办法
在《Python编程:从入门到实践》书中的一个项目用到pygal.i18n获取国别码,
问题描述:
在学习《python编程:从入门到精通》的pygal绘制世界地图时,遇到了这样一个问题:
运行程序报错,提示模型不存在,出错代码如下:
from pygal.i18n import COUNTRIES
1
查阅pygal文档可知,这个模块已被遗弃,使用新的map包,地图绘制命令变为:
wm = pygal.maps.world.World()
1
解决办法:
在Anaconda的Anaconda prompt中输入命令:pip install pygal_maps_world 安装包,
然后,导入文件修改相应代码即可。此包导入命令如下:
import pygal.maps.world
1
最后,贴出完整代码(python采用缩进格式,一定合理缩进代码):
文件country_codes.py代码:
import pygal.maps.world # 导入世界地图包pygal_maps_world
# 定义函数,返回适用于pygal的两位国别码
def get_country_code(country_name):
# pygal两位国别码列表表示法:pygal.maps.world.COUNTRIES.items()
for code,name in pygal.maps.world.COUNTRIES.items():
if name == country_name:
return code
return None
文件 country_codes.py代码如下:
import json
import pygal.maps.world # 导入世界地图绘制包,用于绘制地图
from country_codes import get_country_code # 导入国别码识别包
# 读取数据文件population_data.json(不知哪儿可以加载数据文件,需要的可以留言)
filename = 'population_data.json'
with open(filename) as f:
pop_data = json.load(f) # 将json格式转换为python识别格式
cc_populations = {} # 用于存储人口数据
for pop_dict in pop_data:
if pop_dict['Year'] == '2010': # 提取2010年的数据
country_name = pop_dict['Country Name']
# 将格式不统一的人口数据转换为浮点型,再转换为int型统一格式,供pygal绘图使用
population =int(float( pop_dict['Value']))
code = get_country_code(country_name)
# 按国别码提取正确的国家和对应人口数据
if code:
cc_populations[code]=population
#根据人口数量将国家分成三组,0-1千万,1千万-10亿,10亿以上
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 < 1000000000:
cc_pops_2[cc] = pop
else:
cc_pops_3[cc] = pop
wm = pygal.maps.world.World() # 生成世界地图实例
wm.title = 'World Population in 2010, by Country' # 设置标题
wm.add('1-10m',cc_pops_1) # 添加0——1千万的国家和人口
wm.add('10m-1bn',cc_pops_2) # 添加1千万——10亿的国家和人口
wm.add('>bn',cc_pops_3) # 添加10亿以上的国家和人口
wm.render_to_file('world_population.svg') # 渲染视图到文件,通过浏览器可查看
将两个文件保存到同一目录,运行文件country_codes.py,以浏览器的方式打开world_population.svg文件,即可看到文章开头展示的图片内容。
Pygal之世界地图绘制from pygal.i18n import COUNTRIES 报错的解决办法的更多相关文章
- PyChram中同目录下import引包报错的解决办法?
相信很多同学和我一样在PyChram工具中新建python项目的同目录下import引包会报错提示找不到,这是因为该项目找不到python的环境导致的: 如果文件开始的时候包引包的错误可以,都可以用用 ...
- appium---【已解决】【Mac】from appium import webdriver报错提示“Unresolved import webdriver”
报错提示: from appium import webdriver提示Unresolved import webdriver 报错原因:没有安装Appium_Python_Client 解决办法: ...
- pycharm 中 import requests 报错
一 , 使用Pycharm来抓取网页的时候,要导入requests模块,但是在pycharm中 import requests 报错. 原因: python中还没有安装requests库 解决办法: ...
- import tensorflow 报错: tf.estimator package not installed.
import tensorflow 报错: tf.estimator package not installed. 解决方案1: 安装 pip install tensorflow-estimator ...
- pycharm import scrapy 报错,No module named 'scrapy'
本地通过下载 pip install scrapy安装成功后,在pychram里面 import scrapy报错 后来在找了各种解决方法,重装wheel,twisted,都不行,最后发现是需要改Pr ...
- Python3.x:import urllib2报错解决方案
Python:import urllib2报错解决方案 python2和3有些不一样: python2:输出为print 'hello world' python3:输出为print('hello w ...
- import cx_Oracle报错,提示importError: DLL load failed: 不是有效的Win32程序。
问题说明1:WIN32,python是2.7版本,本地oracle client是32位的.import cx_Oracle报错,提示importError: DLL load failed: 该模块 ...
- from appium import webdriver 报错
from appium import webdriver 报错 看看你的文件是不是就叫appium
- php Yaf_Loader::import引入文件报错的解决方法
php Yaf_Loader::import引入文件报错的解决方法 改下配置文件就行<pre>yaf.use_spl_autoload=1</pre> 也可以PHP动态修改 毕 ...
随机推荐
- 23个Python爬虫开源项目代码,让你一次学个够
今天为大家整理了23个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快 1.WechatSogou [1]– 微信公众号 ...
- ADT SDK Manager启动时一闪而过
原因为使用了Android Studio的绿色JRE,必须要安装安装版JDK或者JRE,绿色版JRE放在ADT目录虽然能启动ADT但是不能启动SDK Manager
- [OI]Noip 2018总结(普及)
考砸了,还有原谅我代码十分有限的可读性. 一个人的真正伟大之处就在于他能够认识到自己的渺小.——保罗 从一年前初一九月到现在18年10月接触OI已经有一年了.几次模拟赛也自我感觉良好,都过了一等的线, ...
- 2018-2019 ACM-ICPC, Asia East Continent Finals部分题解
C:显然每p2个数会有一个0循环,其中22 32 52 72的循环会在200个数中出现,找到p2循环的位置就可以知道首位在模p2意义下是多少,并且循环位置几乎是唯一的(对72不满足但可能的位置也很少) ...
- 【JVM】关于类加载器准备阶段的一道面试题目
一个经典的延伸问题 我们来看一个经典的延伸问题,准备阶段谈到静态变量,那么对于常量和不同静态变量有什么区别? 需要明确的是,没有人能够精确的理解和记忆所有信息,如果碰到这种问题,有直接答案当然最好:没 ...
- Win下端口占用问题:OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试
常见问题:https://www.cnblogs.com/dotnetcrazy/p/9192089.html netstat -ano|findstr 8080 如果不计较端口,换个即可 也可以查找 ...
- MySQL 创建、删除、显示数据库、数据表
1 创建.删除.显示数据库 -- 创建数据库 create database student_db character set utf8 collate utf8_general_ci; -- 删除数 ...
- Numpy进阶操作
目录 1. 如何获取满足条设定件的索引 2. 如何将数据导入和导出csv文件 3. 如何保存和加载numpy对象 4. 如何按列或行拼接numpy数组 5. 如何按列对numpy数组进行排序 6. 如 ...
- 分布式监控系统开发【day38】:报警模块解析(六)
一.负责把达到报警条件的trigger进行分析 ,并根据 action 表中的配置来进行报警 1.目录结构 2.功能如下 1.找到trigger的关联动作, 2.收到的数据传给trigger_msg就 ...
- Typora使用说明(记录总结)
目录 区域元素 YAML FONT Matters 菜单 段落 标题 引注 序列 可选序列 代码块 数学块 表格 脚注 水平线 特征元素 链接 超链接 内链接 相关链 URLs 图片 斜体 加粗 删除 ...