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代码(逐级优化)
May 25 Python
python 将字符串转换成字典dict
Mar 24 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
通过pykafka接收Kafka消息队列的方法
Dec 27 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
Python基础知识点 初识Python.md
May 14 Python
python递归法实现简易连连看小游戏
Mar 25 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
Jan 09 Python
Python DES加密实现原理及实例解析
Jul 17 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实现PDO的mysql数据库操作类
2014/12/12 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
实例讲解PHP表单处理
2019/02/15 PHP
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
小程序日历控件使用方法详解
2018/12/29 Javascript
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
Python求离散序列导数的示例
2019/07/10 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
Python通过文本和图片生成词云图
2020/05/21 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
纪念一二九运动演讲稿
2014/09/16 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
门面房租房协议书
2014/12/01 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python