ECharts实现数据可视化

ECharts实现数据可视化

  • 一、Echarts的简介
  • 二、Echarts使用教程
    • 1.下载echarts.min.js文件
    • 2.编写echarts代码
      • (1)创建渲染实列
      • (2)修改option达到预期的效果
      • (3)创建配置项到实例中
  • 三、Echarts的基础配置
  • 四、前后端连通的echarts图表

一、Echarts的简介

Echarts的官方介绍为:一个基于javaScript的开源可视化图表库。
Echarts的官方网址:https://echarts.apache.org/zh/index.html
Echarts主要包括各种集成完整的漂亮的图表:折现图、柱状图、饼图。
在这里插入图片描述
用户可以从大量的图表当中挑选自己需要的图表,并且引入自己的项目当中,可以流畅的使用在各种浏览器,并且按照官网的配置项,配置唯一的图表

二、Echarts使用教程

1.下载echarts.min.js文件

在echarts使用的时候,需要导入官方提供的echarts.min.js文件,官方提供echarts.min.js文件。
echarts.min.js下载路径:https://fastly.jsdelivr.net/npm/echarts@5/dist/echarts.min.js
进入上方的路径,打开页面为:
在这里插入图片描述
将本页面中所有的内容复制,用vscode新建一个js文件复制到新建的js文件当中,就可以获得echarts.min.js文件。
在这里插入图片描述
检查echarts.min.js是否引入成功。
用vscode 打开下面的页面,看图表是否成功渲染出来,如果能够成功渲染出来则说明echarts.min.js引入成功。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#app {width: 400px;height: 400px;}</style>
</head><body><div id='app'></div>
</body>
<script src="../js/echarts.min.js"></script>
<script>// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('app'));// 指定图表的配置项和数据var option = {title: {text: 'ECharts 入门示例'},tooltip: {},legend: {data: ['销量']},xAxis: {data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);
</script></html>

检查运行之后的页面:
在这里插入图片描述

2.编写echarts代码

echarts组件主要需要注意三个部分:1.创建渲染实列 2.创建配置项 3 渲染配置项到实例当中

(1)创建渲染实列

创建echarts实例,查找html页面当中的要渲染的标签。
1、该标签必须有唯一标识,(防止一个echarts渲染两个容器)
2、该容器必须有高和宽,只有有高和宽才能成功渲染出来。

  var myChart = echarts.init(document.getElementById('app'));

(2)修改option达到预期的效果

配置项是echarts最重要的部分,它决定着图表渲染出来的效果,配置项需要在echarts官网的众多实列当中选择和自己预期相似的示例,点开示例之后根据API修改配置项达到预期效果:
在这里插入图片描述
配置项:
在这里插入图片描述
从下图找到option中的组件,一个一个修改自己的组件达到自己想要的效果
在这里插入图片描述

(3)创建配置项到实例中

通过setOption(option)就可以将option渲染到容器当中。通过完成上述操作就可以渲染出一个echarts图表。

  myChart.setOption(option);

三、Echarts的基础配置

配置项文件:https://echarts.apache.org/zh/option.html#title
本部分主要讲解几个主要的配置。
需要了解的主要配置:** title series xAxis yAxis grid tooltip legend color**
1,title:标题组件,包含主标题和副标题。
title: {
text: ‘Referer of a Website’, //标题 修改为 房间价格分布图
subtext: ‘Fake Data’, // 副标题:标题下面的小标题,可以删除
left: ‘center’ // 标题部分 位于顶部的位置
}
在这里插入图片描述
2.tooltip:提示框组件。
下面的情况是提示框组件,删除的话,就消失
在这里插入图片描述
3.legend 图例组件 删除就消失
legend: {
orient: ‘vertical’,
left: ‘left’ //位于什么位置,left位于最左侧,right位于最右侧,百分数从左到右的位置
},
在这里插入图片描述
4.series
系列列表。每个系列通过 type 决定自己的图表类型
通俗的理解:图标数据,指定什么类型的图标,可以多个图表重叠。
series: [
{
name: ‘Access From’,
type: ‘pie’,
radius: ‘50%’,
data: [
{ value: 1048, name: ‘Search Engine’ },
{ value: 735, name: ‘Direct’ },
{ value: 580, name: ‘Email’ },
{ value: 484, name: ‘Union Ads’ },
{ value: 300, name: ‘Video Ads’ }
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: ‘rgba(0, 0, 0, 0.5)’
}
}
}
]
其中的type表示图表的类型,name是提示框组件的名称,data是渲染的数据
在这里插入图片描述
5.xAxis
直角坐标系 grid 中的 x 轴,一般情况下单个 grid 组件最多只能放上下两个 x 轴,多于两个 x 轴需要通过配置 offset 属性防止同个位置多个 x 轴的重叠。
type表示x坐标轴的类型,data,表示每一块的数据名称。
xAxis: {
type: ‘category’,
data: [‘Mon’, ‘Tue’, ‘Wed’, ‘Thu’, ‘Fri’, ‘Sat’, ‘Sun’]
}
6.grid 表示是否显示网格。
7.color:调色盘颜色列表。如果系列没有设置颜色,则会依次循环从该列表中取颜色作为系列颜色。

option = {title: {text: '房间价格分布',left: 'center'},tooltip: {trigger: 'item'},legend: {orient: 'vertical',left: 'left'},series: [{name: '房间价格',type: 'pie',radius: '50%',data: [{ value: 1048, name: '单人间' },{ value: 735, name: '双人间' },{ value: 580, name: '总统套房' },{ value: 484, name: '普通间' },{ value: 300, name: '豪华套房' }],emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]
};

在这里插入图片描述

四、前后端连通的echarts图表

前端代码:

  <!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="css/content.css"><link rel="stylesheet" href="layui/css/layui.css"><style>.echartsContainer {display: flex;width: 100%;height: 400px;justify-content: space-between;}.demo1 {width: 48%;height: 100%;}.demo2 {width: 48%;height: 100%;}</style>
</head><body><div class="echartsContainer"><div class="demo1"></div><div class="demo2"></div></div>
</body>
<script src="js/jquery.js"></script>
<script src="js/jquery.cookie.js"></script>
<script src="layui/layui.js"></script>
<script src="js/login.js" defer></script>
<script src="js/connect.js" defer></script>
<script src="js/echarts.min.js"></script>
</html>

javaScript代码:

<script>
var arr = [];
$.ajax({url:"GetRoomPrice",type:"get",data:{},async:false,success:function(res){arr= res.data}
})var chartDom = document.querySelector(".demo1");var myChart = echarts.init(chartDom);option = {title: {text: '房间价格分布图',left: 'center'},tooltip: {trigger: 'item'},legend: {orient: 'vertical',left: 'left'},series: [{name: '房间价格',type: 'pie',radius: '50%',data: arr,emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]};myChart.setOption(option)
</script>
<script>

后端代码:
价格饼图

package com.qcby.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.qcby.db.MysqlUtil;/*** Servlet implementation class GetRoomPrice*/
@WebServlet("/GetRoomPrice")
public class GetRoomPrice extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public GetRoomPrice() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/json,charest=utf-8");String sql = "SELECT type as name, MIN(price) AS value FROM room GROUP BY type";String[] c = {"value","name"};String reString = MysqlUtil.getJsonBySql(sql, c);response.getWriter().write(reString);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}}

数量饼图

package com.qcby.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.qcby.db.MysqlUtil;/*** Servlet implementation class GetRoomCount*/
@WebServlet("/GetRoomCount")
public class GetRoomCount extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public GetRoomCount() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/json,charest=utf-8");String sql = "select count(*) as count,type from room GROUP BY type";String[] colums = {"count","type"};String res = MysqlUtil.getJsonBySql(sql,colums);response.getWriter().write(res);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

数据库的数据如下:
在这里插入图片描述

运行结果如下:
在这里插入图片描述

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

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

相关文章

ArcGIS 10.8.1之后发布栅格数据的MapServer 动态工作空间 替换数据源渲染问题

背景 经过测试&#xff0c;Server 10.8.1、11.0、11.1发布相关服务设置动态空间之后&#xff0c;前端都无法自动读取同名的clr色彩映射表文件进行渲染&#xff0c;服务都是由ArcGIS Pro进行发布。 原因 基于ArcMap发布的服务才支持&#xff0c;但是10.8.1之后不支持ArcMap发…

vscode在使用 alt + tab 切换程序窗口时,输入法总是自动变为中文模式

因为需要在 vscode 中编写代码&#xff0c;将输入法设为英文模式&#xff0c;但是用 alt tab 切换到浏览器查看文档&#xff0c;此时浏览器也是英文模式&#xff0c;但是再切回 vscode 后就变为中文模式了&#xff0c;需要使用 shift 键切换为英文模式&#xff0c;一次两次还好…

【Linux加餐-网络命令】

一、Ping命令 Ping 是一种网络工具&#xff0c;用于测试主机之间的连通性。它通过发送 ICMP&#xff08;Internet Control Message Protocol&#xff09;回显请求 报文到目标主机&#xff0c;并等待目标主机返回 ICMP 回显应答 报文&#xff0c;从而判断网络是否通畅以及测量往…

Maven工具学习使用(六)——聚合与继承

Maven的聚合特性能够把项目的各个模块聚合在一起构建,而Maven的继承特性则能帮助抽取个模块相同的依赖和插件等配置,在简化POM的同时,还能促进各个模块配置的一致性。 一般说来一个项目的子模块都应该使用同样的groupId,如果他们一起开发和发布,还应该使用同样的version,…

vulhub靶场jangow-01-1.0.1

启动靶机时点shift停在这个界面 点e进入编辑页面&#xff0c;把ro改成rw signie init/bin/bash Ctrlx保存&#xff0c;ip a查看网卡信息 vim /etc/network/interfaces 把enp0s17改为ens33&#xff0c;保存退出 重启靶机&#xff0c;nmap扫ip ip为192.168.93.179 nmap扫端口 扫…

C++11QT复习 (四)

Day6-1 输入输出流运算符重载&#xff08;2025.03.25&#xff09; 1. 拷贝构造函数的调用时机 2. 友元2.1 友元函数 3. 输入输出流运算符重载3.1 关键知识点3.2 代码3.3 关键问题3.4 完整代码 4. 下标访问运算符 operator[]4.1 关键知识点4.2 代码 5. 函数调用运算符 operator…

数仓架构告别「补丁」时代!全新批流一体 Domino 架构终结“批流缝合”

在数字化转型的浪潮中&#xff0c;企业对数据处理的需求日益复杂多变&#xff0c;传统的批处理和流处理架构已难以满足日益增长的性能和时效性要求。在此背景下&#xff0c;YMatrix CEO 姚延栋发布了深度文章《数仓架构告别「补丁」时代&#xff01;全新批流一体 Domino 架构终…

一文详解QT环境搭建:ubuntu20.4安装配置Qt5

随着软件开发技术的不断进步&#xff0c;跨平台应用程序的需求日益增长&#xff0c;开发者们面临着如何在不同操作系统之间保持代码的一致性和效率的问题。Qt作为一个成熟的跨平台C框架&#xff0c;在这方面提供了卓越的支持&#xff0c;不仅简化了GUI应用程序的创建过程&#…

安全+低碳+高效:Acrel-3000助力企业打造未来型电能管理体系-安科瑞黄安南

一 背景 电能因为方便传输、易于转换、便于控制等特性&#xff0c;成为广大企事业单位生产、办公最主要的能量来源。双碳背景下&#xff0c;由于电能清洁、高效、零排放的特点&#xff0c;能源消费侧将逐步以电代煤、以电代油、以电代气&#xff0c;形成以电为中心的能源消费体…

Docker 安装 RabbitMQ

以下是在Docker中安装RabbitMQ并实现配置、数据、日志文件映射的完整步骤。 步骤 1&#xff1a;创建本地目录结构 # 创建配置、数据、日志目录 mkdir -p /root/docker/rabbitmq/{conf,data,logs}# 目录结构说明&#xff1a; # - conf: 存放自定义配置文件 # - data: 持久化存储…

SAP-ABAP:SAP数据集成全场景技术指南(BAPI、RFC、IDOC、BATCHJOB、ODATA、WEBSERVICE):从实时交互到批量处理

SAP数据集成全场景技术指南:从实时交互到批量处理 #mermaid-svg-hpPMerJYUerla0BJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hpPMerJYUerla0BJ .error-icon{fill:#552222;}#mermaid-svg-hpPMerJYUerla0BJ .er…

运维规则之总结(Summary of Operation and Maintenance Rules)

运维规则之总结 在运维领域&#xff0c;经验和流程往往决定了系统的稳定性与可靠性。一个运维人&#xff0c;总结出了以下10条运维规则&#xff0c;涵盖了从基础管理到高级策略的全面内容&#xff0c;旨在帮助运维人员更好地应对各种挑战&#xff0c;确保系统的平稳运行。 1.…

⑦(ACG-网络配置)

网络配置是指对计算机网络的各种参数进行设置和调整&#xff0c;以实现网络正常运行和高效通信。网络配置包括多方面的内容&#xff0c;常见的配置包括&#xff1a; 1. IP地址设置&#xff1a;IP地址是设备在网络中的身份标识&#xff0c;设置IP地址是网络配置的基础&#xff…

Redis学习二

Redis和数据库数据一致性问题 Redis作为缓存分两种情形 只读缓存, 只读缓存无需考虑数据更新问题, Redis中有则返回Redis中的数据, Redis无则查询数据库读写缓存 同步直写策略异步缓写策略 数据读取流程: 正常回写Redis代码流程: public Object getDataById(String id) {…

深入理解 Linux 文件权限:从 ACL 到扩展属性,解剖底层技术细节与命令应用

Linux 以其强大而精密的文件权限和属性管理机制著称&#xff0c;这一体系不仅是系统安全的关键基石&#xff0c;还为灵活性和扩展性提供了坚实支撑。从传统的九位权限模型到访问控制列表&#xff08;ACL&#xff09;、扩展文件属性&#xff08;Extended Attributes&#xff09;…

剑指Offer35- - 链表

1. 题目描述 这题题意感觉说的不是很清楚&#xff0c;容易让人产生歧义&#xff01;其实题意很简单&#xff0c;给你一个链表 head&#xff0c;你深拷贝它&#xff0c;然后返回即可&#xff0c;注意不能修改原链表 /* // Definition for a Node. class Node { public:int val;N…

C 语言常用关键字详解:static、const、volatile

C 语言常用关键字详解&#xff1a;static、const、volatile 文章目录 C 语言常用关键字详解&#xff1a;static、const、volatile1. static 关键字1.1 用于局部变量示例&#xff1a; 1.2 用于全局变量示例&#xff1a; 1.3 用于函数示例&#xff1a; 2. const 关键字2.1 用于局…

Centos7本地部署阿里Qwen2-7B模型

1.从hagging face下载模型 2.把下载的模型文件&#xff0c;放到/usr/local/Qwen2-7B目录下 3.创建虚拟环境&#xff0c;安装依赖 1.环境安装 sudo yum update -y sudo yum install -y python3 python3-pip git 2.创建虚拟环境并激活 python3 -m venv qwen2_env source qwen2_…

群晖监控套件通过ONVIF协议添加海康摄像头

1. 首先登录录像机 通道管理 找到每个摄像头的IP地址 2. 登录某个摄像头 配置 3. 添加用户名&#xff08;注意不能是admin&#xff09; 设置账户密码 用户类型选管理员 4. 群晖里面添加摄像头&#xff0c;自动搜索&#xff0c;添加刚刚那个IP的摄像头 5. 验证…

【C++】 —— 笔试刷题day_8

一、求最小公倍数 题目解析 题目很简单&#xff0c;给定两个数a和b求它们的最小公倍数。 算法思路 对于求两个数的最小公倍数问题&#xff0c;想必已经非常熟悉了&#xff1b; 在之前学校上课时&#xff0c;记得老师提起过&#xff0c;最小公倍数 两个数的乘积 除以最大公约数…