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动态修改 毕 ...
随机推荐
- 查看crontab运行状态
cron服务是linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start/sbin/service crond stop/sbin/ ...
- 第七章· Redis Cluster 核心技术
Redis Cluster 分布式集群 Redis Cluster 安装部署 Redis Cluster 集群管理操作(核心)
- Android——具有边框的Textview
我们可以看见很多类似瀑布流的分类: 通过边框进行选择,那么这个边框是怎么变成的呢? 我们可以通过添加背景图,不过有更加简单的,如下: 我们在drawable文件中编写一个shape, <?xml ...
- Python——sys模块
七.sys模块 sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传递参数. sys.exit([arg]): 程序中间的退出,arg=0为正常退出. sys.getdefaulten ...
- 数据分析之Pandas
一.Pandas介绍 1.介绍 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. ...
- git仓库构建小记
1.新建 .git 文件夹 约定的文件目录下,新建 .git 文件夹 mkdir test.git 2.初始化服务端仓库 git init --bare test.git 此时进入 test.git ...
- 中国剩余定理 CRT
中国剩余定理 CRT 正常版本CRT 要解的是一个很容易的东西 \[ \begin{aligned} x\equiv a_1(mod\ m_1)\\ x\equiv a_2(mod\ m_2)\\ . ...
- Codeforces 1077D Cutting Out(二分答案)
题目链接:Cutting Out 题意:给定一个n长度的数字序列s,要求得到一个k长度的数字序列t,每次从s序列中删掉完整的序列t,求出能删次数最多的那个数字序列t. 题解:数字序列s先转换成不重复的 ...
- 洛谷P2822 组合数问题(题解)
https://www.luogu.org/problemnew/show/P2822(题目传送) 先了解一下有关组合数的公式:(m在上,n在下) 组合数通项公式:C(n,m)=n!/[m!(n-m) ...
- 使用FFMPEG进行一些视频处理(C#)视频合并、转码、获取时长
FFMPEG的强大无需多说,举几个用到的功能,直接贴代码了 还有更多命令用到时搜索即可 视频转码 ) { var args = "-y -i {0} -vcodec copy {1}&quo ...