上瘾了,最近又给公司撸了一个可视化大屏(附源码)
2023-09-14 09:06:05 时间
我拿到的需求是这样的,需要在地图上将我司船舶的轨迹展示出来。听起来很简单,一开始我也是这样想的。通过一些BI工具应该可以轻松实现,比如这样的:
仔细观察可以看到,这种轨迹是两点之前的弧线,适合用来展示航空的航线或者起点终点方向类型轨迹,而加载了插件后发现,其功能是无法支持船舶轨迹的数据的,所以该插件被pass掉了。
百度已经无法找到合适的资源了,于是我又转向了微信公众号搜索,我发现了folium这个地图可视化的库。它的可视化地图让人着迷,也支持不同的瓦片(高德,谷歌,也有内置的)风格供你选择,可以在地图上描绘点,圈,直线,热力图等风格的图片,但是如何将轨迹在地图上描绘出来,不论是如何搜索技术文章,也无论是看官方文档,能实现轨迹的只能通过点来描绘,当点足够密集,就相当于轨迹了,类似于中国台风网这种图的样式,如下图。
但现实情况是,我们船舶的轨迹是没有如此频繁的轨迹数据的,那么folium包也没有办法实现我的需求。终于,功夫不负有心人,plotly 这个可视化的包被我找到了。
1、实践之轨迹地图
轨迹地图使用plotly包,具体脚本如下,数据为自己模拟数据。
import os
import plotly.graph_objects as go
import plotly as py
url = r'D:\working_directory\task\文章\shipping_line.html'
mapbox_access_key = '需要你自己去mapbox的网站去申请一个账号'
style = 'streets'
# 采用的风格为streets类型
fig = go.Figure()
color_map = ['#7bd3f6', '#bcbd22', '#17becf','#d62728']
lat_li = []
lng_li = []
for item in [(122.180204,30.806457),(123.256865,29.762908),(123.366728,28.631261),(122.048368,26.350981),(120.048857,24.705378),(119.060087,22.835386),(119.543486,19.433918),(119.960966,16.276336),(116.159697,11.413759),(110.183134,5.067372),(105.173368,0.064226),(101.833525,1.909575),(101.833525,1.909575),(101.833525,1.909575),(88.122587,3.840643),(80.300322,5.154913),(76.433134,7.338996),(71.247587,13.900433),(63.425322,22.246862),(56.394072,25.857701)]:
lng_li.append(item[0])
lat_li.append(item[1])
fig.add_trace(go.Scattermapbox(
name='vessel',
mode='markers+lines',
lon=lng_li,
lat=lat_li,
marker={'size': 2, 'color': color_map[3]},
showlegend=False
))
fig.update_layout(
margin={'l': 0, 't': 0, 'b': 0, 'r': 0}
, mapbox={
'center': {'lon': 90, 'lat': 8},
'zoom': 1
, 'style': style
, 'accesstoken': mapbox_access_key}
)
if os.path.isfile(url):
os.remove(url)
py.offline.plot(fig, filename=url, auto_open=False)
# 保存为html文件
效果图如下:
2、最终制作出来的效果图
就这样,对大屏各个模板进行打磨,我们最终效果图是这样的。
3、20个大屏的由来
这次大屏需求之后,陆陆续续接了很多新的需求。我们整理了近20个可视化大屏模板,今天分析给大家,梳理不易,获取前记得点赞、收藏、关注。
4、获取方式
20款开源的可视化大屏(含源码)已打包放置后台了,获取方法如下:
- 方法1、微信搜索公众号:Python学习与数据挖掘,后台回复:可视化
- 方法2、扫描二维码或者发送图片到微信识别,后台回复:可视化
相关文章
- 14家超过10亿美元估值的大数据公司,有何过人之处?
- 多数公司容易犯的5个大数据错误
- 专访 ShineScrum公司创始人Jim Wang(王军):组织架构会发生颠覆性的变化,自治团队和团队单元会成为主体
- Interview:算法岗位面试—10.31下午上海某银行总部公司(二面,四大行之一)之项目简介、比赛介绍、某个比赛的过程
- Interview:算法岗位面试—10.24下午—上海某软件公司(机器学习,上市)电话面试—考察SVM、逻辑回归、降低过拟合、卷积网络基础等
- Interview:算法岗位面试—BAT公司问题面试之计算机基础(进程与线程的区别)、经典概率问题等集锦
- R0-R37它是Arm 寄存器,那是,CPU内部。和GPIO注册所有外设。换句话说,要是arm的cpu,它包含了其他芯片公司将有R0-R37,和GPIO寄存器只有一个特定的芯片。
- 公司就一个测试,两年了还在做功能测试,工作很轻松,感觉自己什么都不会,继续下去就真淘汰了...
- 面试官说公司不是培训机构,我需要有经验的员工,应届生如何答?
- 请注意,你公司UI自动化可能已经落后别人一个时代了 (干货)
- 公司刚来的00后真卷,上班还没2年,跳到我们公司起薪20k....
- 在小公司卧薪尝胆3年,意外拿到字节offer,BAT离你其实不远!
- DevOps 在公司项目中的实践落地
- web3游戏——核心理念是将区块链的平等思想纳入其中,用户参与度会更高,可以防止游戏公司割你韭菜
- 应届生春招,这七类三无公司一定要闭坑
- 开源全球公司贡献 49 名,涛思数据荣登 2022 中国开发者影响力年度榜单
- 公司内网有一台Win10主机发起扫描僵尸网络,防火墙显示ip sweep attack攻击