“大数据时代下的地理信息可视化:ECharts地图和数据面板实践“
数据可视化是一种数据分析技术,它通过将数据转化为图形或图表等可视化方式,以便更好地理解和解释数据。在实际应用中,数据可视化被广泛用于数据监控、业务分析、决策支持等领域。而ECharts是一款优秀的数据可视化工具,它具有丰富的图表类型、简单易用的API、灵活的配置选项等特点,可以帮助开发者轻松地构建各种类型的数据可视化面板。
本篇博客将介绍如何使用ECharts打造一个数据可视化面板,从基础概念入手,逐步实现一个功能强大的数据可视化面板。
目录
一、了解ECharts
二、数据可视化面板的构建
1. 准备工作
2. 绘制柱状图
3. 绘制饼图
4.绘制折线图
5. ECharts中的地图组件
1. 准备地图数据
2.初始化ECharts
3. 引入ECharts库
4. 配置地图数据
5. 配置图表样式
一、了解ECharts
ECharts是百度开发的一款优秀的数据可视化工具,它提供了各种类型的图表,包括线性图、柱状图、饼图、散点图、雷达图、地图等,可以满足各种数据可视化需求。ECharts使用JavaScript语言编写,支持多种数据格式,包括JSON、XML、CSV等,支持响应式布局,能够自适应不同的设备和屏幕大小。
ECharts的主要特点如下:
1.丰富的图表类型:ECharts提供了多种类型的图表,包括线性图、柱状图、饼图、散点图、雷达图、地图等。
2.简单易用的API:ECharts的API非常简单易用,开发者只需要按照文档中的要求传入相应的数据即可。
3.灵活的配置选项:ECharts提供了丰富的配置选项,开发者可以通过配置选项来调整图表的样式和布局。
4.支持多种数据格式:ECharts支持多种数据格式,包括JSON、XML、CSV等。
5.响应式布局:ECharts能够自适应不同的设备和屏幕大小。
二、数据可视化面板的构建
为了更好地展示ECharts的强大功能,我们将使用ECharts构建一个数据可视化面板,展示某公司在不同地区的销售情况。
1. 准备工作
在开始构建数据可视化面板之前,我们需要进行一些准备工作,包括:
(1)安装ECharts:首先,我们需要在项目中引入ECharts,可以通过npm或CDN的方式引入,这里我们选择通过CDN引入。在html文件中添加以下代码:
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.1/echarts.min.js"></script>
(2)准备数据:在构建数据可视化面板之前,
我们需要准备好相应的数据。在本篇博客中,我们假设有一个公司,它在中国的各个省份都有销售业务,我们需要使用这些销售数据构建数据可视化面板。
假设我们已经收集了一段时间内该公司在中国各个省份的销售数据,数据包含以下字段:
- 省份:表示销售发生的省份。
- 销售额:表示销售的金额,单位为万元。
- 客户数:表示销售的客户数。
接下来,我们将使用这些数据来构建数据可视化面板。
2. 绘制柱状图
首先,我们将使用柱状图来展示不同省份的销售额。在html文件中添加一个div容器,用于显示柱状图,代码如下:
<div id="bar-chart" style="width: 800px;height: 600px;"></div>
接下来,在JavaScript文件中编写代码,使用ECharts绘制柱状图。代码如下:
// 获取div容器
var chart = echarts.init(document.getElementById('bar-chart'));// 定义数据
var data = [{name: '北京', value: 120},{name: '上海', value: 80},{name: '广东', value: 200},{name: '浙江', value: 150},{name: '四川', value: 100},{name: '湖南', value: 80},{name: '江苏', value: 130},{name: '福建', value: 90},{name: '辽宁', value: 70},{name: '河南', value: 120}
];// 配置选项
var option = {title: {text: '不同省份的销售额'},tooltip: {},xAxis: {type: 'category',data: data.map(function(item) {return item.name;})},yAxis: {},series: [{type: 'bar',data: data.map(function(item) {return item.value;})}]
};// 使用配置项绘制图表
chart.setOption(option);
代码解释:
首先,我们通过echarts.init()方法获取div容器,创建一个ECharts实例。
然后,定义了数据变量data,它是一个包含多个对象的数组,每个对象表示一个省份的销售额。
接下来,我们定义了一个option变量,它是一个配置选项对象,用于设置图表的样式和布局。
在option对象中,我们设置了图表的标题和提示框。
然后,我们设置了x轴和y轴的样式,其中x轴使用了category类型,表示离散的数据。
最后,我们设置了一个series对象,用于设置图表的系列,这里我们使用了柱状图系列。在series对象中,我们使用了data.map()方法将数据中的
销售额提取出来,作为柱状图的数据。通过type属性设置图表的类型为柱状图。
最后,我们通过chart.setOption(option)方法将配置选项应用到图表中,完成柱状图的绘制。
3. 绘制饼图
接下来,我们将使用饼图来展示不同省份的销售额占比。在html文件中添加一个div容器,用于显示饼图,代码如下:
<div id="pie-chart" style="width: 800px;height: 600px;"></div>
接下来,在JavaScript文件中编写代码,使用ECharts绘制饼图。代码如下:
// 获取div容器
var chart = echarts.init(document.getElementById('pie-chart'));// 定义数据
var data = [{name: '北京', value: 120},{name: '上海', value: 80},{name: '广东', value: 200},{name: '浙江', value: 150},{name: '四川', value: 100},{name: '湖南', value: 80},{name: '江苏', value: 130},{name: '福建', value: 90},{name: '辽宁', value: 70},{name: '河南', value: 120}
];// 配置选项
var option = {title: {text: '不同省份的销售额占比'},tooltip: {},series: [{type: 'pie',data: data}]
};// 使用配置项绘制图表
chart.setOption(option);
代码解释:
首先,我们通过echarts.init()方法获取div容器,创建一个ECharts实例。
然后,定义了数据变量data,它是一个包含多个对象的数组,每个对象表示一个省份的销售额。
接下来,我们定义了一个option变量,它是一个配置选项对象,用于设置图表的样式和布局。
在option对象中,我们设置了图表的标题和提示框。
然后,我们设置了一个series对象,用于设置图表的系列,这里我们使用了饼图系列。在series对象中,我们使用了原始数据作为饼图的数据。
最后,我们通过chart.setOption(option)方法将配置选项应用到图表中,完成饼图的绘制。
4.绘制折线图
最后,我们将使用折线
图来展示数据的趋势。折线图是一种常见的可视化方式,可以清晰地呈现数据的变化趋势和波动情况。
首先,我们需要修改之前的HTML代码,添加一个折线图容器:
<div id="line-chart" style="width: 100%; height: 400px;"></div>
然后,在JavaScript代码中,添加以下代码:
// 绘制折线图
var lineChart = echarts.init(document.getElementById('line-chart'));
var lineOption = {title: {text: '数据趋势图'},tooltip: {},legend: {data:['数据']},xAxis: {data: date},yAxis: {},series: [{name: '数据',type: 'line',data: data}]
};
lineChart.setOption(lineOption);
这段代码与绘制柱状图的代码类似,也是先获取折线图容器,然后定义一个选项对象,并将数据传递给选项对象中的配置。在这里,我们定义了一个包含title、tooltip、legend、xAxis、yAxis和series等配置的选项对象,其中xAxis配置为日期数据,yAxis配置为空,series配置为包含数据的折线图系列。最后,我们调用setOption()方法将选项对象应用于折线图容器中。
5. ECharts中的地图组件
1. 准备地图数据
在创建地图可视化之前,我们需要准备相应的地理数据。ECharts中的地图组件支持多种地图类型,包括全国、省份、城市等行政区划,以及世界地图、各大洲地图等全球范围的地图。我们可以从ECharts官方提供的地图数据仓库中获取到各种类型的地图数据,也可以自行创建和导入地图数据。这里我们以中国地图为例,从官方地图数据仓库中下载并引入中国地图数据。
下载地址:https://github.com/apache/echarts/tree/master/map/data
下载完成后,将下载的文件解压,将china.js和china.json两个文件复制到项目中,这两个文件就是中国地图的数据文件。
2.初始化ECharts
在HTML文件中,使用以下代码初始化ECharts:
var myChart = echarts.init(document.getElementById('mapContainer'));
其中,mapContainer是HTML页面中用于容纳地图的div元素的id。
3. 引入ECharts库
在HTML文件中,我们需要引入ECharts库。
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.2.2/echarts.min.js"></script>
4. 配置地图数据
接下来,需要使用以下代码配置地图数据:
var chinaMapData = JSON.parse('地图数据的JSON字符串');
echarts.registerMap('china', chinaMapData);
其中,chinaMapData是我们从文件中读取的中国地图数据。
5. 配置图表样式
然后,需要配置图表的样式,例如地图的背景色、边框颜色、文字颜色等。以下是一些常见的配置项:
option = {backgroundColor: '#404a59',geo: {map: 'china',roam: true,label: {normal: {show: true,textStyle: {color: 'rgba(0,0,0,0.4)'}},emphasis: {textStyle: {color: 'rgba(0,0,0,0.9)'}}},itemStyle: {normal: {borderColor: 'rgba(0,0,0,0.2)'},emphasis: {areaColor: '#2a333d',shadowOffsetX: 0,shadowOffsetY: 0,shadowBlur: 20,borderWidth: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
};// 将配置项设置到 map 上
myChart.setOption(option);
在上述代码中,我们使用了`geo`组件来绘制地图,并通过`map`属性指定要使用的地图类型为'china'。接着,我们设置了`itemStyle`属性来设置地图各个区域的样式,包括边框颜色和高亮时的样式。最后,将配置项设置到图表实例上即可。在以上步骤完成后,运行代码,即可看到中国地图的展示效果。在地图上可以通过鼠标滚轮来放大或缩小,也可以拖动地图来移动位置。此外,还可以将鼠标移动到各个省份上,查看该省份的详细信息。
综上所述,使用 ECharts 的地图组件可以方便地展示各个区域的数据分布情况,具有直观、易懂、美观等优点,是数据可视化中常用的一种方式。
相关文章:
“大数据时代下的地理信息可视化:ECharts地图和数据面板实践“
数据可视化是一种数据分析技术,它通过将数据转化为图形或图表等可视化方式,以便更好地理解和解释数据。在实际应用中,数据可视化被广泛用于数据监控、业务分析、决策支持等领域。而ECharts是一款优秀的数据可视化工具,它具有丰富的…...
MySQL数据库基础
目录 数据库介绍 什么是数据库 数据库的分类 1. 数据库的操作 创建数据库 显示数据库 使用数据库 删除数据库 2. 表的操作 创建表 删除表 3. 常用数据类型 插入数据 查询数据 从本篇起就又要开始新的篇章了,数据结构初级阶段的就告一段落了࿰…...
近自由电子近似
假设 potential 的变化是非常小的 我们可以找到一条平均线 代表的就是我们的平均值 这样我们用原来的 就可以得到一个 和平均的这条线相比,上下变化不大,这个对我们薛定谔方程求解能带来很大的便利 我们就可以得到一个平均势场 这样的话,…...
【JavaWeb】从输入URL到展示出页面的过程
目录 DNS域名解析 检查hosts文件 查询缓存 查询本地DNS服务器 编辑查询根域名服务器等 三次握手建立连接 发送请求 响应请求 页面渲染 断开连接 这些过程简单的理解为先找到某人地址,给他发送消息可以去他家拿东西吗?他同意后拿到他的东西在…...
华为OD机试真题Java实现【数字涂色】真题+解题思路+代码(20222023)
数字涂色 题目 疫情过后,希望小学终于又重新开学了,三年二班开学第一天的任务是将后面的黑板报重新制作。黑板上已经写上了N个正整数,同学们需要给这每个数分别上一种颜色。为了让黑板报既美观又有学习意义,老师要求同种颜色的所有数都可以被这种颜色中最小的那个数整除。…...
Log Structure Merge Tree
LSM是一种基于日志追加写的数据结构,非常适合为具有高写入数据提供索引访问 LSM基于以下前提 内存读写速度远高于磁盘,但内存有限磁盘顺序读写速度远高于随机读写 结构 WAL WAL(write-ahead log)是用于在系统错误时提供持久化,在写入数据…...
Python QT5设计UI界面教程
简介:PyQT5开发常用知识,零基础上手,需配合我之前写的博文,配置好QT设计工具和ui文件转py文件的工具。博文为:使用Python PyQt5实现一个简单的图像识别软件;页面效果如下: 1.设计菜单栏 Contai…...
uniapp系列-图文并茂手把手教你hbuilder进行uniapp云端打包 - 安心打包
什么是安心打包 提交App的模块配置信息到云端,在云端打包机生成原生代码包 为什么使用云打包 更安全:打包时不提交应用代码、证书等信息更快速:非首次打包时不用提交云端打包机排队等待,本地直接出包省流量:减少了打…...
【精品】SpringBoot中基于拦截器实现登录验证功能
拦截器简介 拦截器是属于springmvc体系的,只能拦截controller的请求。拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。 Interceptor 作用 日志记录:记录请求信息的日志&…...
哈工大服务科学与工程第一章作业
服务的概念服务是个非常广义的概念——涉及到经济、管理、业务、IT领域以下是一些各方对服务的定义:服务是一方向另一方提供的任意活动和好处。它是不可触知的,不形成任何所有权问题,其生产可能与物质产品有关,也可能无关。服务是…...
SpringMVC源码:参数解析、方法调用与返回值处理
参考资料: 《SpringMVC源码解析系列》 《SpringMVC源码分析》 《Spring MVC源码》 写在开头:本文为个人学习笔记,内容比较随意,夹杂个人理解,如有错误,欢迎指正。 前文: 《SpringMVC源码&a…...
【MySQL】表的数据处理
哈喽,大家好!我是保护小周ღ,本期为大家带来的是 MySQL 数据表中数据的基本处理的操作,数据表的增删改查,更多相关知识敬请期待:保护小周ღ *★,*:.☆( ̄▽ ̄)/$:*.★*一、 添加数据&a…...
反思当下所处的环境,有没有让你停滞不前、随波逐流
环境对人的影响真的很大,小时候的环境、长大后的环境、工作环境、生活环境、好的环境、差的环境......我们都生活在一定的环境中所以既是环境的产物,又是环境的创造者与改造者。我们与环境的关系是相辅相成的我们的生活和工作当中接触到的人或事或物&…...
小程序(十四)后端-签到成功
文章目录一、持久层1、CheckinMapper.xml2、CheckinMapper.java3、TbHolidaysDao.xml4、TbHolidaysDao.java5、TbWorkdayDao.xml6、TbWorkdayDao.java二、业务层1、 CheckinService.java三、conroller层1、编写 TbUserDao.xml 文件,查询员工的入职日期。2、编写 TbU…...
X264简介-Android使用(一)
X264 简介及使用 1、简介 2、环境搭建 3、使用 4、小结 简介 官网连接:https://www.videolan.org/developers/x264.html 官方文档:https://wiki.videolan.org/Category:X264/ x264是用于编码H.264/MPEG-4 AVC视频流的免费软件库。它世界上最流行的…...
DetectGPT:使用概率曲率的零样本机器生成文本检测
DetectGPT的目的是确定一段文本是否由特定的llm生成,例如GPT-3。为了对段落 x 进行分类,DetectGPT 首先使用通用的预训练模型(例如 T5)对段落 ~xi 生成较小的扰动。然后DetectGPT将原始样本x的对数概率与每个扰动样本~xi进行比较。…...
【深度学习】BERT变体—BERT-wwm
1.BERT-wwm 1-1 Whole Word Masking Whole Word Masking (wwm)是谷歌在2019年5月31日发布的一项BERT的升级版本,主要更改了原预训练阶段的训练样本生成策略。 原有基于WordPiece的分词方式会把一个完整的词切分成若干个子词,在生成训练样本时ÿ…...
【华为OD机试真题 java、python、c++】优秀学员统计【2022 Q4 100分】(100%通过)
代码请进行一定修改后使用,本代码保证100%通过率。本文章提供java、python、c++三种代码 题目描述 公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。 每个员工会对应一个id,每天的打卡记录记录当…...
JavaScript里的循环方法:forEach,for-in,for-of
文章目录forEach循环for–in循环for-of循环for-of循环使用例子:循环一个数组(Array):循环一个字符串:循环一个类型化的数组(TypedArray):循环一个Map:循环一个 Set:循环一个 DOM collection循环一个拥有enumerable属性的对象循环一个生成器(g…...
汽车标定知识整理(二):CCP报文基本命令介绍
目录 一、基本命令 CRO命令报文的基本命令表: 二、基本命令与可选命令帧格式介绍 1、CONNECT——建立连接(0x01) 2、GET_CPP_VERSION——获取CCP版本(0x1B) 3、SET_MTA——设置内存传输地址(0x02&#…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
