pyecharts动态轨迹图的实现示例


Posted in Python onApril 17, 2020

今天的主题!最近很多朋友问起pyecharts,尤其是地理坐标图的制作,都说被其图形之美给吸引到了。刚好今天也有同事问起来,那么今天就以pyecharts的动态地理轨迹图为例,说说该怎么使用pyecharts。

import pandas as pd   
import random
from pyecharts import GeoLines, Style  #地理轨迹图的类就是Geolines

在同事那里拿了一份国内部分城市的经纬度数据,首先用pandas读取数据,看看数据长什么样子,我们发现数据由一列组成,基本结构为'地名':['经度','纬度'],那么接下来我们将各地方的地名,经度,纬度提取出来。

#读取数据
data = pd.read_excel('./Desktop/data.xlsx',header = None,names = ['name'])
print(data.head())
        name
0   '上海': [121.4648,31.2891],
1    '东莞': [113.8953,22.901],
2   '东营': [118.7073,37.5513],
3    '中山': [113.4229,22.478],
4   '临汾': [111.4783,36.1615],
 
#写个遍历,把各地方的地名,经度,纬度提取出来,并存取在DataFrame中
city_list = []
lad_list = []
long_list = []
for i in data['name']:
  s = i.strip().split(':')     #去除前后空格,并以":"为分隔符分裂字符
  city = s[0][1:-1]        #取分裂后字符的第一个,得到地名
  lad = s[1].split(',')[0][2:]   #取分裂后字符的第二个,继续以','为分隔符分裂字符
  long = s[1].split(',')[1][:-2]
  city_list.append(city)
  lad_list.append(lad)
  long_list.append(long)
result = pd.DataFrame({'地点': city_list, '经度': lad_list, '纬度': long_list})

从result数据框我们看到,一共由114行,3列数据组成,114行太多了,画到地图上会很乱,于是我们用random包随机抽样20个出来做实验;

在抽样之前,我们需要将数据整理成geolines要求的格式,格式为[('始点','终点')];

另外因为我们要自定义各城市的经纬度(担心部分城市在地图显示不出来),pyecharts里面城市经纬度的格式为{'城市':['经度','纬度']},因此我们还需要组装一下我们数据。

#以东莞为始点,其他各个城市为终点,整理数据
plotting = result[result['地点'] != '东莞']['地点'].apply(lambda x : ('东莞',x))
 
#自定义各城市的经纬度
geo_cities_coords = {result.iloc[i]['地点']:[result.iloc[i]['经度'],result.iloc[i]['纬度']] for i in range(len(result))}
 
#随机抽样20个城市组合
plotting_data = random.sample(list(plotting),20)

数据已经准备好了,接下来就套路来了,先设定画布的格式,然后将geolines作为类Geolines的实例,接着设置geolines的参数,最后展示成果!

#设置画布的格式
style = Style(title_pos="center", 
       width=1000, 
       height=800)
 
#部分地理轨迹图的格式
style_geolines = style.add(is_label_show=True,
           line_curve=0.3,       #轨迹线的弯曲度,0-1
           line_opacity=0.6,      #轨迹线的透明度,0-1
           geo_effect_symbol='plane', #特效的图形,有circle,plane,pin等等
           geo_effect_symbolsize=10,  #特效图形的大小
           geo_effect_color='#7FFFD4', #特效的颜色
           geo_effect_traillength=0.1, #特效图形的拖尾效果,0-1
           label_color=['#FFA500', '#FFF68F'],#轨迹线的颜色,标签点的颜色,
           border_color='#97FFFF',   #边界的颜色
           geo_normal_color='#36648B', #地图的颜色
           label_formatter='{b}',   #标签格式
           legend_pos = 'left')
 
#作图
geolines = GeoLines('小文的pyechart出行轨迹图', **style.init_style)
geolines.add('从东莞出发',
       plotting_data,
       maptype='china',  #地图的类型,可以是省的地方,如'广东',也可以是地市,如'东莞'等等
       geo_cities_coords=geo_cities_coords,
       **style_geolines)
 
#发布,得到图形的html文件
geolines.render()

pyecharts动态轨迹图的实现示例

做到这里地理轨迹图已经完成了,那么假如我们想画一个既有出发又有回来的轨迹图怎么画呢?其实很简单,就在上面的基础上,再增加一个add就可以了,如下:

geolines.add('回到东莞',
       [('海口','东莞'),('拉萨','东莞'),('贵州','东莞'),('兰州','东莞')],
       maptype='china', 
       geo_cities_coords=geo_cities_coords,
       **style_geolines)

pyecharts动态轨迹图的实现示例

好了,我们看到了有几架小飞机回到东莞了,分别是我们设置的拉萨,贵州,海口和兰州,这样看似乎有点乱,那么我们可以设置一个参数,使得出发和回程分开,先设置is_legend_show = True,再设legend_selectdmode = 'single',点击不同的图例就可以显示了,如下:

style_geolines = style.add(is_label_show=True,
           line_curve=0.3,       
           line_opacity=0.6,      
           geo_effect_symbol='plane', 
           geo_effect_symbolsize=10,  
           geo_effect_color='#7FFFD4',
           geo_effect_traillength=0.1,
           label_color=['#FFA500', '#FFF68F'],
           border_color='#97FFFF', 
           geo_normal_color='#36648B', 
           label_formatter="{b}", 
           is_legend_show=True,
           legend_pos = 'left',
           legend_selectdmode = 'single')  #单例模式
geolines.add('从东莞出发',     #图例1名称
       plotting_data,
       maptype='china',  
       geo_cities_coords=geo_cities_coords,
       **style_geolines)
geolines.add('回到东莞',      #图例2名称
       [('海口','东莞'),('拉萨','东莞'),('贵州','东莞'),('兰州','东莞')],
       maptype='china', 
       geo_cities_coords=geo_cities_coords,
       **style_geolines)

pyecharts动态轨迹图的实现示例

到此这篇关于pyecharts动态轨迹图的实现示例的文章就介绍到这了,更多相关pyecharts动态轨迹图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python基本数据类型详细介绍
Mar 11 Python
Python列表append和+的区别浅析
Feb 02 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
May 18 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
python存储16bit和32bit图像的实例
Dec 05 Python
Django如何实现上传图片功能
Aug 16 Python
Python基于当前时间批量创建文件
May 07 Python
Python列表去重复项的N种方法(实例代码)
May 12 Python
win10安装python3.6的常见问题
Jul 01 Python
python 实现朴素贝叶斯算法的示例
Sep 30 Python
python反爬虫方法的优缺点分析
Nov 25 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 #Python
Python openpyxl 插入折线图实例
Apr 17 #Python
python 画图 图例自由定义方式
Apr 17 #Python
关于python 的legend图例,参数使用说明
Apr 17 #Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 #Python
python matplotlib实现将图例放在图外
Apr 17 #Python
python 比较字典value的最大值的几种方法
Apr 17 #Python
You might like
提升PHP执行速度全攻略(上)
2006/10/09 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
nodejs实现连接mongodb数据库的方法示例
2018/03/15 NodeJs
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
python利用有道翻译实现"语言翻译器"的功能实例
2017/11/14 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
详解python tkinter 图片插入问题
2020/09/03 Python
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
幼儿园元旦亲子活动方案
2014/02/17 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
颐和园的导游词
2015/01/30 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
对PyTorch中inplace字段的全面理解
2021/05/22 Python