11

用Python画中国地图,实现各省份数据可视化

 4 years ago
source link: http://developer.51cto.com/art/202004/614465.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

第一步:安装pyecharts

pyecharts是一款将python与echarts结合的强大的数据可视化工具,本文使用了0.1.9.4版本

pip install pyecharts==0.1.9.4 

第二步:读取数据

我的数据是在Excel表格里,如下图:

YJNZJvR.jpg!web Execel数据

使用xlrd(没有就通过pip install xlrd安装)读取Excel表格中的数据

# 第一种方式,使用xlrd读取Execel表格中数据 
data = xlrd.open_workbook('data.xlsx') 
table = data.sheet_by_name('Sheet1') 
province = table.col_values(0)[1:] 
num = table.col_values(1)[1:] 

如果各位没有相应的Execel文件,也不想新建一个,那就干脆自己定义一个字典,其中键是省份,值是对应的数量,然后再把对应的值取出来

# 第二种方式,直接自己写一个字典,然后取出相应数据 
province_distribution = {'四川': 239.0, '浙江': 231.0, '福建': 203.0, '江苏': 185.0, '湖南': 152.0, '山东': 131.0, '安徽': 100.0, '广东': 89.0, '河北': 87.0, '湖北': 84.0, '吉林': 75.0,   
                         '上海': 70.0, '江西': 64.0, '广西': 64.0, '贵州': 64.0, '北京': 63.0, '云南': 53.0, '重庆': 49.0, '河南': 48.0, '陕西': 38.0, '山西': 37.0, '辽宁': 33.0, '新疆': 25.0,  
                         '内蒙古': 23.0, '黑龙江': 20.0, '天津': 19.0, '甘肃': 13.0, '海南': 9.0, '青海': 7.0, '宁夏': 4.0, '西藏': 0.0} 
provice = list(province_distribution.keys()) 
num = list(province_distribution.values()) 

第三步:画图

chinaMap = Map(width=1200, height=600) 
chinaMap.add(name="分布数量", 
             attr=province, 
             value=num, 
             visual_range=[0, 239], 
             maptype='china', 
             is_visualmap=True) 
chinaMap.render(path="中国地图.html") 
  • 其中参数name指的是显示在地图正上方的标题,
  • attr就是一个包含了各省份名称的列表,
  • value就是包含了各省份对应数值的列表,
  • visual_range指的是整个数据中的数值范围,
  • maptype就是指的地图类型,
  • is_visualmap代表是否显示颜色

这时候就会生成一个名称为“中国地图.html”的文件,打开后如下图所示:

6NNJfej.gif 无省份名称地图

如果想保存为图片,可以点击地图右侧的下载按钮,因为隔着比较远,我在录屏的时候并没有把下载按钮录进来,但大家在自己电脑上肯定会看见的。

第四步:进一步优化

大家可以看到上图中各省份的名称只有在被鼠标选中的情况下,才能显示,并且所保存的图片也不会显示各省份名称,如果要显示各省份名称,则需要对html文件就行修改,推荐使用notepad++(一个文本编辑软件,直接去百度上下载,很简单的)打开“中国地图.html”文件,然后在第1923行的那个series中添加"label":{ "normal":{ "show":true}并保存,如下:

nYryEzY.jpg!web 修改html文件

然后再打开“中国地图.html”文件,就可以看到各省份的名称啦,如下图:

jURbmuI.gif 有省份名称地图

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK