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 14 Python
python编码最佳实践之总结
Feb 14 Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
一篇文章弄懂Python中所有数组数据类型
Jun 23 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 Python
去除python中的字符串空格的简单方法
Dec 22 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 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 在线翻译函数代码
2009/05/07 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
python显示天气预报
2014/03/02 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Python决策树分类算法学习
2017/12/22 Python
pytorch标签转onehot形式实例
2020/01/02 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
专业销售业务员求职信
2013/11/18 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
奖励申请报告范文
2015/05/15 职场文书
MySQL 数据类型详情
2021/11/11 MySQL
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL
MySQL数据库查询之多表查询总结
2022/08/05 MySQL