Python pyecharts实时画图自定义可视化经纬度热力图

news2024/11/25 0:35:58
目录
  • 背景
  • 基于pyecharts内置经纬度的热力图
  • 基于自定义经纬度的热力图
  • pyecharts库缺点
  • 不同地图坐标系区别
    • WGS-84 - 世界大地测量系统
    • GCJ-02 - 国测局坐标
    • BD-09 - 百度坐标系

背景

在业务数据统计分析中基本都会涉及到各省区的分析,数据可视化是数据分析的一把利器,这些省区的数据一般会用地图可视化出来,这样一些规律可以被一面了然发现

地图有很多可视化类型,比如:基本地理图、热力图、路径图、涟漪图 等,本篇文章主要介绍 热力图,使用的工具百度开源 pyecharts

模拟数据以十一期间全国旅游景点热度为例(虚构数据)

模拟数据

基于pyecharts内置经纬度的热力图

pyecharts 中自带了一些城市的经纬度,在画图时只要列出城市 or 省份的名字,即可在地图中自动展示,pyecharts会根据城市 or 省份的名字自动提取到经纬度

安装完pyecharts包之后,可以在pyecharts包文件夹里面找到相应的文件city_coordinates.json,里面保存了大量的地理名与经纬度的信息
一般路径如下:xxxxxx\Lib\site-packages\pyecharts\datasets\city_coordinates.json

下面用模拟数据中 城市热度 列来进行热力图可视化
左右滑动查看完整代码

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

import pandas as pd

from pyecharts import options as opts

from pyecharts.charts import BMap

from pyecharts.globals import BMapType

import json

data=pd.read_excel('热力图模拟数据.xlsx')

hotmap = (

    BMap(is_ignore_nonexistent_coord=True,    #忽略不存在的坐标

         init_opts=opts.InitOpts(width="1300px", height="600px"))

    .add_schema(baidu_ak="自己申请的key", center=[120.13066322374, 30.240018034923],

                zoom=5,   # 当前视角的缩放比例

                is_roam=True   # 是否开启鼠标缩放和平移漫游

               

    .add(

        "热度"#图例

        data_pair=[list(z) for z in zip(data['城市'].to_list(), data['热度'].to_list())],

        type_="heatmap",

        label_opts=opts.LabelOpts(formatter="{b}"),

    )

    .set_global_opts(

        title_opts=opts.TitleOpts(title="十一期间全国旅游景点热度",

                                  pos_left='center',

                                  title_textstyle_opts=opts.TextStyleOpts(font_size=32)

                                 ),

        legend_opts=opts.LegendOpts(pos_right='20%'),

        visualmap_opts=opts.VisualMapOpts()

    )

    .add_control_panel(

        copyright_control_opts=opts.BMapCopyrightTypeOpts(position=3),

        maptype_control_opts=opts.BMapTypeControlOpts(

            type_=BMapType.MAPTYPE_CONTROL_DROPDOWN

        ),

        scale_control_opts=opts.BMapScaleControlOpts(),

        overview_map_opts=opts.BMapOverviewMapControlOpts(is_open=True),

        navigation_control_opts=opts.BMapNavigationControlOpts(),

        geo_location_control_opts=opts.BMapGeoLocationControlOpts(),

    )

    .render("基于pyecharts内置经纬度的热力图.html")

)

#hotmap.render_notebook()

内置经纬度

基于自定义经纬度的热力图

因pyecharts中的 city_coordinates.json 里面存放的均是一些常用的地理经纬度,如果想使用自定义的经纬度,pyecharts也是支持的

下面用模拟数据中 经度维度热度 列来进行热力图可视化

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

import pandas as pd

from pyecharts import options as opts

from pyecharts.charts import BMap

from pyecharts.globals import BMapType

import json

data=pd.read_excel('热力图模拟数据.xlsx')

data_json={}

for index,row in data.iterrows():

    data_json[row['地名']]=[float(row['经度']),float(row['维度'])]

with open("BMAP.json","w") as f:

    json.dump(data_json,f)

hotmap = (

    BMap(is_ignore_nonexistent_coord=True,    #忽略不存在的坐标

         init_opts=opts.InitOpts(width="1300px", height="600px"))

    .add_schema(baidu_ak="自己申请的key", center=[120.13066322374, 30.240018034923],

                zoom=5,   # 当前视角的缩放比例

                is_roam=True   # 是否开启鼠标缩放和平移漫游

               )

    .add_coordinate_json("BMAP.json"#加载自定义坐标

    .add(

        "热度"#图例

        data_pair=[list(z) for z in zip(data['地名'].to_list(), data['热度'].to_list())],

        type_="heatmap",

        label_opts=opts.LabelOpts(formatter="{b}"),

    )

    .set_global_opts(

        title_opts=opts.TitleOpts(title="十一期间全国旅游景点热度",

                                  pos_left='center',

                                  title_textstyle_opts=opts.TextStyleOpts(font_size=32)

                                 ),

        legend_opts=opts.LegendOpts(pos_right='20%'),

        visualmap_opts=opts.VisualMapOpts(max_=20#设置最大值,目的是为了能够精确查看自定坐标位置

    )

    .add_control_panel(

        copyright_control_opts=opts.BMapCopyrightTypeOpts(position=3),

        maptype_control_opts=opts.BMapTypeControlOpts(

            type_=BMapType.MAPTYPE_CONTROL_DROPDOWN

        ),

        scale_control_opts=opts.BMapScaleControlOpts(),

        overview_map_opts=opts.BMapOverviewMapControlOpts(is_open=True),

        navigation_control_opts=opts.BMapNavigationControlOpts(),

        geo_location_control_opts=opts.BMapGeoLocationControlOpts(),

    )

    .render("基于自定义经纬度的热力图.html")

)

#hotmap.render_notebook()

自定义经纬度

pyecharts库缺点

没有现成的方法用来直接导入自定义坐标,需要先把自定义坐标写在json文件中,然后再通过加载文件实现导入,而没有一个直接导入自定义坐标的方法,这个可以从源码中看出来,如果有一个 add_coordinate_dict 函数就完美了

缺点

不同地图坐标系区别

我们通常用经纬度来表示一个地理位置,但是由于一些原因,我们从不同渠道得到的经纬度信息可能并不是在同一个坐标系下。

  • 高德地图、腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系
  • 百度地图使用的是BD-09坐标系
  • 底层接口(HTML5 Geolocation或ios、安卓API)通过GPS设备获取的坐标使用的是WGS-84坐标系

不同的坐标系之间可能有几十到几百米的偏移,所以在开发基于地图的产品,或者做地理数据可视化时,我们需要修正不同坐标系之间的偏差。

WGS-84 - 世界大地测量系统

WGS-84(World Geodetic System, WGS)是使用最广泛的坐标系,也是世界通用的坐标系,GPS设备得到的经纬度就是在WGS84坐标系下的经纬度。通常通过底层接口得到的定位信息都是WGS84坐标系

GCJ-02 - 国测局坐标

GCJ-02(G-Guojia国家,C-Cehui测绘,J-Ju局),又被称为火星坐标系,是一种基于WGS-84制定的大地测量系统,由中国国测局制定。此坐标系所采用的混淆算法会在经纬度中加入随机的偏移。

国家规定,中国大陆所有公开地理数据都需要至少用GCJ-02进行加密,也就是说我们从国内公司的产品中得到的数据,一定是经过了加密的。绝大部分国内互联网地图提供商都是使用GCJ-02坐标系,包括高德地图,谷歌地图中国区等。

BD-09 - 百度坐标系

BD-09(Baidu, BD)是百度地图使用的地理坐标系,其在GCJ-02上多增加了一次变换,用来保护用户隐私。从百度产品中得到的坐标都是BD-09坐标系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/721347.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

事件机制(事件流、事件委托、事件类型)

HTML DOM 允许 JavaScript 对 HTML 事件作出反应。JavaScript 能够在事件发生时执行,比如当用户点击某个 HTML 元素时。 JavaScript与HTML之间的交互是通过事件实现的。事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。 目录 事件是由三部分组成 执行事件的步…

儿童硅胶勺子LFGB标准检测是什么?

食品级硅胶制品的德国食品接触材料测试LFGB标准检测哪些项目? Sensory test感官测试一味道和气味对于与食品接触的整体产品 extractable components in ethanol(Ethanol as compulsory simulant)(must perform)10%酒精萃取法(必做) Extractable component in deioni…

官网能为企业营销增长贡献哪些力量?

官网是门面,同时也具备营销价值,可以带来流量转化成销售线索,影响公司营收,B2B业务是复杂的,客户在选择你之前会长期的研究你的官网,了解你的产品及服务、成功案例、甚至是品牌的创始团队信息,来…

SpringCloud学习1

SpringCloud是分布式微服务架构的 一些列解决方案的集合,SpringBoot是一门单独的技术 ​​​​​​

小心 MybatisPlus 的一个坑与面试题

昨天测试说有个 xx 功能用不了,扔给我一个截图,说有报错: 报错信息就是:Transaction rolled back because it has been marked as rollback-only,很好理解:事务被回滚了,因为它已经被标记了只能…

HttpRunner自动化之请求中带有 headers 的接口和发送POST请求

headers 可通过headers 添加头部信息,如下图 # 发送请求头headers的接口 - config:name: 百度接口用例base_url: https://www.baidu.com- test:name: 发送百度接口的头部信息request:url: /smethod: GETheaders:Accept: text/html,application/xhtmlxml,applicati…

LNMT(linux下nignx+mysql+tomcat(中间件)应用)部署应用、及各服务介绍、部署开源站点jpress

目录 一、环境准备 二、tomcat1和tomcat2服务器,安装配置tomcat 1.tomcat服务器介绍 2.JDK软件介绍 3.查看JDK是否安装 4.tomcat1和tomcat2服务器,安装JDK1.8.0_191(JDK必须和nginx版本相适应,不然一直报错) 5.安…

【LeetCode】HOT 100(21)

题单介绍: 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

源启数据资产管理平台助力金融机构加速数据资产化过程

自2000年左右,金融行业开始做数据管理。从数据仓库到数据治理、数据应用,再到后来的大数据,以及今天的数据管理。我们把这个时期总结成数据资产化时代,或者叫国产化时代。 为什么有两个名字?数据资产化时代是因为国家…

关于PID闭环控制中上位机与下位机通讯代码的解析分享(一)

下位机接收数据代码(以STM32单片机为例)与上位机发送数据C#代码分享 1、下位机代码: /*** brief 接收的数据处理* param void* return -1:没有找到一个正确的命令.*/ int8_t receiving_process(void) {uint8_t frame_data[…

虚幻引擎程序化资源生成框架PCG 之 常用撒点方法小结

PCG真好玩,门槛很低,天花板很高 文章目录 前言1. 基本撒点1.1 Landscape上撒点1.2 使用射线检测在地表面撒点1.3 使用曲线撒点1.3.1 沿曲线撒点1.3.2 在闭合曲线内部撒点 1.4 在StaticMesh表面撒点 2. 进阶撒点2.1 在闭合曲线内部放射状撒点2.2 在Mesh表…

MedCalc v22.009 医学ROC曲线统计分析软详细图文教程

简介 MedCalc是一款医学 ROC 曲线统计软件,用于ROC曲线分析的参考软件,医学工作者设计的医学计算器,功能齐全。它可以帮助医生快速作出普通的医学计算,从而对症下药。提供超过76种常用的规则和方法,包括:病…

《消失的她》豆瓣短评数据分析

《消失的她》豆瓣短评数据分析 文章目录 《消失的她》豆瓣短评数据分析一、前言二、数据加载和预处理三、探索性数据分析1、查看评论的评价分布2、查看评论点赞数的分布3、查看评论的地理分布 四、情感分析 一、前言 最近爆火的电影《消失的她》你们有没有去看过呢&#xff1f…

开源站点(jpress)部署

第三阶段基础 时 间:2023年7月5日 参加人:全班人员 内 容: 开源站点部署(jpress) 服务器设置;单台服务器,安装tomcat和mariadb 环境配置: 1、关闭防火墙 systemctl stop fir…

【大数据之Hive】二十、Hive之调优相关配置及Explain查看执行计划

1 Yarn资源配置 需要调整Yarn的参数与CPU、内存等资源有关 (1)yarn.nodemanager.resource.memory-mb   设置一个NodeManager节点分配给容器Container使用的内存,取决于NodeManager所在节点的总内存容量和该节点运行的其他服务的数量&#x…

搭建高性能数据库集群之二:MySQL读写分离(基于mycat2-1.22)

一、概述 读写分离是常见的一种数据库架构,一般是由 1 主多从构成,特殊场景下也会存在多主多从的架构。 无论哪一种架构,对于应用程序来说都是多个数据源,增加了代码的复杂性。如果配合 mycat,则可以实现屏蔽数据库复…

【C++】深入剖析vector

好久不见~让大家久等啦~ 本期让我们来揭开vector的面纱,看看它底层是怎么实现的~ 目录 一、STL定义vector的源码分析: 二、vector的模拟实现 2.1 vector框架的搭建(一些简单功能函数的实现) 2.2 迭代器失效问题 2.2.1 实现i…

【Spring】SpringCloud Ribbon中的7种负载均衡策略!

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务…

个人总结:测试用例万能公式+常见例子(公式的运用)

前言 测试工程师面试的时候,有时候会当场考测试用例,毕竟这是测试工程师的基本功。 对于我来说,让我写测试用例会比让我直接说测试用例更好点。 直接嘴里说出来,容易逻辑混乱,给人一种想到啥说啥的感觉。 其实个人感…

MySQL学习基础篇(九)---子查询

MySQL学习基础篇(九)—子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。SQL 中子查询的使用大大增强了 SELECT查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出…