Py学习  »  Python

作图详解 | 利用Python绘制地图(第一辑)

专利分析可视化 • 6 年前 • 1251 次点击  

今天的教程分享利用Python采用pyecharts的扩展包绘制地图的方法,包括散点地图和热力地图,下一篇文章将介绍用python绘制体现申请流向的流向地图。

1. 安装包及地理信息准备

对于使用pyecharts 0.3.2以上版本的小伙伴,使用地图需要额外安装地图扩展包。

可以直接在anaconda prompt中运行以下命令安装地图扩展包后,再继续下述程序(安装扩展包的相关连接:作图详解|Anaconda扩展包的安装及bug处理)。

 pip install echarts-countries-pypkg

 pip installecharts-china-provinces-pypkg

 pip installecharts-china-cities-pypkg

2. 数据准备

这次我们来做体现某一领域目标市场分布情况的散点地图和热力地图。

首先在INCOPAT中检索并下载数据,注意下载的数据中要有“公开(公告)号”字段,因为后面的程序中是从“公开(公告)号”字段中提取公开号前两位字母,即国别代码,代表公开国家。

3. 国别代码与地理位置的对应数据准备

小编已经贴心地为大家准备好了国别代码对应地理坐标的数据和国别代码对应国家名称的数据(链接: https://pan.baidu.com/s/1MJfGcFyBUVy25MOmV6wyjg 密码: i4cw)。

下载好之后,可以直接使用pandas打开。

部分国别代码与地理坐标的数据的文本截图如下:

国别代码对应国家名称的数据文本截图如下:

4. 作图过程

导入所需的包:

import pandas as pd#导入pandas

import numpy as np#导入numpy

from pyecharts import Geo#导入绘制地图扩展包

读入待用数据:

df=pd.read_excel('2018-04-26.xls',sheetname='sheet1')#打开excel数据表

df1=pd.read_table('国别代码对应列表.txt',index_col='CC')#打开国别代码文件

df2=pd.read_csv('国家-纬度-经度.txt')#打开国家坐标文件

准备备用变量:

country_dic={}#备用字典变量,用于存储国家信息

country_list=[]#备用列表,用于存储国家信息

country_loc_dic#={}#备用字典,用于存储国家坐标

抽取信息,写入备用变量中:

for i in df['公开(公告)号']:#对公开号进行循环

   if not pd.isnull(i):#如果不是空白数据

       if not (i[:2]== 'WO' or i[:2]=='EP'):#丢弃WO和EP

           country_list.append(df1.loc[i[:2]][0])#从公开号前两位抽取国家代码,查表找到对应的中文

           country_dic[str(df1.loc[i[:2]][0])]=0#字典中加入该国家,计数设置为0

           country_loc_dic[str(df1.loc[i[:2]][0])]=[df2.loc[i[:2]][1],df2.loc[i[:2]][0]]#查表更新坐标字典

统计每个国家对应的专利申请数量,并生成pyecahrts绘图所需数据格式:

for i in country_list:#统计每个国家的专利数量

   country_dic[i]+=1

data = [(i,country_dic[i]) for i incountry_dic]#生成pyecharts所需的数据格式

对于普通散点地图,绘图程序如下:

geo = Geo("申请量分布图","", title_color="#fff",

         title_pos="center", width=1200,

         height=600, background_color='#404a59')#实例化一类

attr, value = geo.cast(data)#从传递的数据中抽取国家和数量信息

geo.add("", attr, value,maptype='world',visual_range=[0, 200], visual_text_color="#fff",

       symbol_size=15, is_visualmap=True,geo_cities_coords=country_loc_dic)#图参数控制

geo.render('scatter.html')#保存图片到网页,需手动用浏览器打开。

对于热力图,绘图程序如下:

geo = Geo("申请量分布图","", title_color="#fff",

         title_pos="center", width=1200,

         height=600, background_color='#404a59')#实例化一类

attr, value = geo.cast(data)#从传递的数据中抽取国家和数量信息

geo.add("", attr, value,maptype='world',type="heatmap",visual_range=[0, max(value)],visual_text_color="#fff",

       symbol_size=15,is_visualmap=True,geo_cities_coords=country_loc_dic,is_label_show=True)#绘图参数控制

geo.render('scatter.html')#保存图片到网页,需手动用浏览器打开。

对于特殊效果(水波震动)的散点地图,绘图程序如下:

geo = Geo("申请量分布图","", title_color="#fff",

         title_pos="center", width=1200,

         height=600, background_color='#404a59')#实例化一类

attr, value = geo.cast(data)#从传递的数据中抽取国家和数量信息

geo.add("", attr, value,maptype='world',type="effectScatter",visual_range=[0, max(value)], visual_text_color="#fff",

       symbol_size=15, is_visualmap=True,geo_cities_coords=country_loc_dic)#绘图参数控制

geo.render('scatter.html')#保存图片到网页,需手动用浏览器打开

将上面的数据处理程序分别和绘图控制程序组合在一起,分别运行,即可得到全部的地图。

每张地图都是交互模式,即鼠标指向一个点,高亮并显示该点数据。拖动左下角的图标条,可以选择显示自定义区间内的点。小伙伴们快去试一下吧。

猜你喜欢:

图表介绍 | 地图(第一辑)

图表介绍 | 地图(第二辑)

作图详解|Anaconda扩展包的安装及bug处理

作图详解 | 利用Python绘制自动聚类力导布局图

作图详解 | 利用Python绘制水流图

作图详解 | 利用Python绘制弦图

作图详解 | 利用Python绘制技术功效图的方法

作图详解 | 利用Python绘制技术功效图的方法(第二辑)

动览各国专利申请流向——迁徙式地图作法详解

美国百年电力生产史,附多维数据动态地图作法详解

各地区专利受理量30年变化,附三维动态地图详解

[作图详解] 三维地图——静态篇



保护版权人人有责

小编心血,拒绝盗图,如需转载,后台联系

·↑长按识别二维码关注 ↑·

微信号:专利分析可视化

推特帐号:IPinfographics


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/W5O6KQFg5V
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/11248
 
1251 次点击