【自用笔记】设置简单的实时数据Echarts图表

Echarts图表与数据库数据结合   1.从官网下载js    http://echarts.baidu.com/download.html 2.导入到你的项目中  <script type="text/javascript" src="<%=request.getContextPath()%>/EchatsJs/echarts.js"></script> 3.给图表新建一个盒子/容器 ... 阅读详情

来自业务需求,感觉还挺好玩的,所以记录一下。

Vue2项目,该需求内容是,当鼠标移动到指定位置块时,浮窗显示对应数据的Echarts图表数据,并且要求数据实时变动。

主要用到的是div和echarts,确保项目中有echarts即可完成该需求,可以根据自身项目需求增减配置值及内容。

大概效果:

因为该页面中,嵌套多个子组件,所以数据在大页面中统一处理保存,然后分发,使用ref绑定获取。直接上二级页面(数据展示块组件)和三级页面(图表组件)的代码

父组件统一绑定分发数据的代码:

<sonComponent :ref="componentOne"></sonComponent>

data() {
    return {
        ShareData: {
            DataOne: null,
            DataTwo: null,
            ...    //自定义
        }
    }
}

methods:{
    InitalComponents() {
        if(this.$refs.componentOne) {
            var one = this.$refs.componentOne;
            one.BindShareData(this.ShareData);    //注意分享的是一个对象,把要分享的数据包裹在里面,不然无法通过响应式更新给子组件
        }
    }
}

二级组件页面:

<template>
    <div class="demoToolChart">
        <div @mouseenter="ShowToolEchart($event, '数据1')" @mouseleave="HideToolEchart">
            <div>展示数据内容,如展示DataOne的相关数据</div>
        </div>

        <!-- echarts图表浮窗 -->
        <div class="customizeStyle" v-show="IsShowEchart" :style="{left: ChartLeft+'px', top: ChartTop+'px'}">
            <div>其他数据(自定义取舍)</div>
            <EchartsDataPage ref="Echarts"></EchartsDataPage>
        </div>
    </div>
</template>

<script>
import EchartsDataPage from "@/components/EchartsDataPage.vue"; //自定义图表组件位置
export default {
    name: "DemoToolChart",
    components:
    {
        EchartsDataPage,
    },
    data() {
        return {
            ChartType: null,        //显示数据
            IsShowEchart: false,    //图表浮窗盒子
            ChartLeft: 0,
            ChartTop: 0,
            ChartData: null,        //图表数据
            SharData: { //父组件分享数据 若有展示数据,可先设置与父组件数据结构一致的初始模板
                ShowData: {
                    DataOne: {
                        DetailDataOne: null,        //自定义
                        EchartData: [0,0,0,0,0],    //Y轴数据
                    },
                    DataTwo: {
                        DetailDataOne: null,        //自定义
                        EchartData: [0,0,0,0,0],    //Y轴数据
                    }
                }
            },
        }
    },
    mounted()
    {

    },
    watch:
    {
        SharData: {
            handler(newVal, old) {
                if(newVal && this.IsShowEchart) {
                    if(this.ChartType == 'one') this.ChartData = this.ShowData.ShowData.DataOne;    //获取实时展示数据
                    else this.ChartData = this.ShowData.ShowData.DataTwo;

                    //更新图表信息
                    var chart = this.$refs.Echarts;
                    if(chart) chart.InitEcharts(this.ChartData);
                }
            },
            deep: true,
        }
    },
    methods:
    {
        //获取并计算浮窗图表位置
        ShowToolEchart(event, type)
        {
            this.ChartType = type;

            if(this.ChartType == 'one') this.ChartData = this.ShowData.ShowData.DataOne;    //获取需要展示的数据
            else this.ChartData = this.ShowData.ShowData.DataTwo;

            //获取盒子位置
            const triggerEle = event.currentTarget;
            if(!triggerEle) return;

            const triggerRect = triggerEle.getBoundingClientRect();
            this.ChartLeft = triggerRect.left;  //浮窗距左宽度
            this.ChartTop = triggerRect.bottom + 150 + 30;  //距顶高度 + 盒子一半高度 + 浮窗和父盒子的间距

            //更新图表信息
            var chart = this.$refs.Echarts;
            if(chart) chart.InitEcharts(this.ChartData);

            this.IsShowEchart = true;
        },

        //隐藏盒子
        HideToolEchart()
        {
            this.IsShowEchart = false;
            this.ChartData = null;
            var chart = this.$refs.Echarts;
            if(chart) chart.ClearEcharts();

        },

        //绑定外部分享数据
        BindiSharData(data)
        {
            if(data) this.SharData = data;
        }
    },
}
</script>

三级组件页面(图表):

<template>
    <div class="EchartsDataPage">
        <!-- Echarts图表容器 -->
        <div ref="Echarts"></div>
    </div>
</template>

<script>
import * as echarts from "echarts"; //确保项目中有图表
export default {
    name: "EchartsDataPage",
    data()
    {
        return {
            MyChart: null,
            ChartData: null,    //Y轴数据
        }
    },
    mounted()
    {

    },
    methods:
    {
        //初始化图表并接收数据
        InitEcharts(data)
        {
            if(!data) return;
            if(!this.MyChart) {
                this.MyChart = echarts,init(this.$refs.Echarts);

                //监听窗口变化,防止报错
                window.addEventListener('resize', ()=> {
                    this.MyChart.resize();
                })
            }

            this.ChartData = data;

            this.RenderEcharts(this.ChartData.EchartData);  //这里的数据是外部处理好的Y轴数据
        },

        //渲染图表
        RenderEcharts(seriesData)
        {
            var xAxisData = [xx,x,xxx,...]; //这里是固定的X轴数据
            const flatIndex = xAxisData.indexOf("平盘");    //因个人业务需求,需根据涨跌平来设置不同的颜色,所以这里是找的X轴中平盘索引位置

            const option = {
                backgroundColor: '#333',    //背景色, 其他设定根据Echarts用法自己设定即可
                xAxis: {
                    type: 'category',
                    data: xAxisData,
                    axisLabel: {
                        color: '#fff',  //坐标文字颜色
                        interval: 0,    //显示全部标签
                    }
                },
                yAxis: {
                    type: 'value',
                    axisLabel: {
                        color: "#FFF"
                    },
                    axisLine: { //轴线配置
                        show: true,
                        lineStyle: {
                            color: '#FFF',  //轴线颜色
                        }
                    },
                    splitLine: { show: false, },    //关闭Y轴网格线
                },
                
                series: [
                    {
                        name: '涨跌分布',
                        type: 'bar',
                        data: seriesData,
                        itemStyle: {
                            color: (params) => {
                                if(params.dataIndex == flatIndex) return 'white';       //平盘
                                else if (params.dataIndex > flatIndex) return 'red';    //涨
                                else return 'green';    //跌
                            }
                        },
                        label: {
                            show: true,
                            position: 'top',
                            color: '#fff',
                        }
                    }
                ]
            }
            this.MyChart.setOption(option);
        },

        ClearEcharts()
        {
            if(this.MyChart) {
                this.MyChart.clear();
                this.MyChart.dispose();
                this.MyChart=null;
            }
        },
    },
    beforeDestroy()
    {
        //移除监听,删除图表
        window.removeEventListener('resize', ()=>{
            this.MyChart.resize();
        })
        this.ClearEcharts();
    },
}
</script>

完成。

将数据库中的数据接入Echarts图表 编写SQL查询语句,从数据库中提取需要展示在ECharts图表中的数据,确保查询结果与ECharts图表所需的数据结构相匹配(json格式居多) 阅读详情

相关推荐

构建实时动态图表的AJAX、ECharts与PHP实践

本文还有配套的精品资源,点击获取 简介:本文详细介绍了如何利用AJAX、ECharts和PHP技术组合实现实时动态图表的显示。AJAX用于异步更新网页数据,ECharts提供丰富的图表类型和高度自定义选项以展示实时数据,而PHP则处理请求并提供实时数据。实现过程中需要安装XAMPP环境,并包含前端页面、ECharts核心库、jQuery文件、PHP脚本和定时器的代码。文章还...

weixin_42433737的博客 1022

【实战】ECharts数据可视化之疫情实时监控展示

 项目效果展示:

SAP ABAP实战:如何用CVI_EI_INBOUND_MAIN批量更新BP邮箱(附完整代码)

本文深入解析了SAP ABAP中CVI_EI_INBOUND_MAIN函数在业务伙伴(BP)邮箱地址批量维护场景下的应用。通过详细讲解数据结构构建、关键参数(如任务参数'5')配置及完整代码示例,为开发者提供了一套高效、稳定的批量更新解决方案,并分享了性能优化与错误处理的最佳实践。

weixin_29228781的博客 79

ECharts类图表数据实时更新

以设备在线数量统计为例,实现环形图数据实时更新。

qq_42848737的博客 8072

BPMN2.0规范及流程引擎选型方案

本文主要简明扼要的介绍了BPMN2.0规范的内容,可让读者快速度的了解BPMN2.0所涵盖的主要内容和图形样式。也较为详细的阐述了如何绘制标准的流程图,以及在软件层面中如何实现业务流程功能,和技术选型。

比特桃 1万+

Arduino+NRF24L01 无线遥控舵机与无刷电机系统搭建指南

本文详细介绍了使用Arduino和NRF24L01模块搭建无线遥控系统的完整指南,涵盖舵机和无刷电机的无线控制。从硬件选型、电路连接到代码编写与调试,提供了实用技巧和常见问题解决方案,帮助DIY爱好者低成本实现稳定可靠的无线遥控应用。

sre5engineer的博客 589

echarts 图表,定时器实现数据实时动态

echarts 图表,定时器实现数据实时动态

︶ ̄城南花已开 2080

告别WSL!实测AMD ROCm7预览版在Windows下跑ComfyUI,速度提升与避坑全记录

本文详细记录了在Windows原生环境下部署AMD ROCm7+PyTorch+ComfyUI的全流程,相比WSL环境性能显著提升。涵盖硬件兼容性确认、开发环境配置、Python环境搭建、ComfyUI部署优化及性能对比测试,为AI绘图爱好者提供实用指南。

weixin_42528090的博客 672

echarts 中通过 shift() 和 push() 实时更新数据

数据分析时一般都会用到echarts,本来没想过说还要实时更新,后来要求说要实时更新,然后就在网上找了好多资料,总结了,最后出来了 这里我是用 vue 写的 首先 从 echarts 上复制的代码块下来 放到 图表函数中(下面的一系列操作都是在该函数中进行) let option = { // 标题 title: { text: “空气温度与时间的关系图”, left: “center” }, ......

Y_Cfeng的博客 1万+

026、传感器校准:加速度计校准

本文详细介绍了无人机飞控系统中加速度计的校准方法。作者从一次炸机事故引入,强调加速度计校准的重要性。文章首先解释了加速度计测量原理和误差来源,包括零偏、尺度因子和交叉轴耦合。重点介绍了两种校准方法:六位置法利用重力作为参考,操作简单但精度有限;椭球拟合通过采集大量数据点进行最小二乘拟合,精度更高但实现复杂。文章还指出温度补偿这一常被忽视的关键因素,并分享了实际调试中的经验教训,包括采样时长、安装误差、验证方法等。最后建议初学者从六位置法入手,逐步优化校准精度,强调良好的校准是飞控性能的基础。

2401_88858637的博客 46

MIKE水动力笔记13_数字化海图2之克里金插值

在进行MIKE水动力建模之初,需要准备好水深数据,本专题系列博文主要讲解如何将扫描版JPG格式海图数据在ArcGIS中进行数字化并制作成xyz水深地形数据,用的克里金插值方法,仅供参考。

晏长街的博客 2881

监测数据实时展示——ECharts的应用

ECharts监测数据实时展示demo

chenzeyun37的博客 2247

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

data+scenario+science+insight 836

Echarts 基本设置 设置图表位置

在 Echarts 文档中查找设置图标位置,设置条形图的位置,设置饼状图的位置,找到很艰辛。 1、设置条形图的位置通过option.grid的x属性设置图形 x 轴方向距左上角的位置 ,x、y、x2、y2的的含义如下图: 2、设置饼状图的位置通过series.center属性,默认是[50%, 50%]. 看下面的 Echarts 基本配置,很清晰: theme = ...

xqhys的博客 2万+

单片机设计具备断电记忆功能的计时器

本文介绍了如何设计一款具备断电记忆功能的计时器,利用单片机和EEPROM存储器实现了计时器值的保存和恢复。当然,在实际的设计中还需要考虑其他因素,如电源管理、时钟精度等,以确保计时器的正常运行和准确性。选择合适的单片机:在设计计时器时,我们需要选择一款具备存储功能的单片机,以便在断电后能够保存计时器的状态。可以优化显示方式,使用更加直观的界面来展示计时器的值;函数中,我们首先从 EEPROM 中读取计时器的初始值,然后在一个无限循环中每秒钟增加计时器的值,并将新的值写入 EEPROM 中。

RlDart的博客 1094

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

echarts简单的实时图表更新

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible...

LLL_liuhui的博客 2818

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Echarts连接数据库,实时绘制图表详解

通过上述步骤,我们成功地将ECharts与数据库连接,并实现了实时数据的可视化绘制。这种方法不仅可以用于销售数据,还可以广泛应用于其他需要实时数据展示的场景。ECharts的灵活性和强大的功能使其成为数据可视化的优选工具。版权声明:本博客内容为原创,转载请保留原文链接及作者信息。参考文章ECharts 教程 | 菜鸟教程ECharts连接数据库的具体实现。

ning的博客 2464

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

echarts简单使用、echarts通过计时器进行动态更新数据、echarts连接数据库实时更新数据

echarts简单使用、echarts通过计时器进行动态更新数据、echarts连接数据库实时更新数据

m0_59023231的博客 1万+

echarts图表x,y轴的设置

xAxis属性代表echarts图表的x轴设置代码如下 xAxis : [ { type : 'category', // type:坐标轴类型。 // [ default: 'category' ] /*可选: 1.'value' 数值轴,适用于连续数据; 2.'category' 类目轴,适用于离散的类目数据,为该类型...

岁末zzz的博客 1万+

Vue 之 echarts 图表数据可视化常用的一些图表/动态图表/3D图表的简单整理

Vue 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。本节介绍,vue 中添加 echarts ,然后在 vue 中简单使用一些 echarts中常用的图表,包括一些动态的图表、3D的图表等 ,如果有不足之处,欢迎指出,或者你有更好的方法,欢迎留言。

仙魁XAN 8411

Echarts实时更新数据

1、html代码: "text/javascript" src="./js/jquery.min.js">                   2、js代码: // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById(

xiaosongwahaha的博客 3万+

echarts 图表制作初探

当今工作中,利用数据制作图表是不可避免的。然而,当前多数软件制作图表,一是操作复杂,二是好一点的示例都需要付费。偶然间,发现利用echarts经过简单的数据修改就可以生成较好的图表。通过多方查找,网上介绍多数要么过于简单,要么介绍过于详细,不利于多数人应用。本文主要记录自己学习的过程,在方便自己的同时,也希望对大家有所帮助。注:文中示例,除单项介绍外,完全代码复制到文本文件中保存为’html’格式便能运行(前提是同目录内必须放置echarts.js文件)。

fjwangxi的博客 1536

html图表数据呈现,websocket+Echarts实时图表数据展示

WebSocket是一种网络通信协议,是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。为什么需要WebSocket ?初次接触 WebSocket的人,都会问同样的问题: 我们已经有了HTTP协议,为什么还需要另-一个协议?它能带来什么好处?答案很简单,因为HTTP协议有一个缺陷:通信只能由客户端发起。举例来说, 我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询...

weixin_34916178的博客 1358

echarts 实时刷新图表

echarts 实时刷新图表

敲代码无敌小奶龙的博客 2794

echarts 图表数据更新方式

问题表现 页面 echarts 图表 在做一些数据交互的时候会涉及到一些数据的更新。如果只是简单的新数据传递给echarts图表,许多时候我们会发现 旧有的时候依然残留在页面之上 如下一示例 旧数据 series: [{ name: ‘A’, type: ‘bar’, data: [200, 300, 100, 330, 350], },{ name: ‘B’, type: ‘bar’, data...

qq_34609633的博客 8751

echarts图表调取json文件中的数据

1、data.json文件中的数据书写格式 { "data":[5, 20, 36, 10, 12, 20],//纵坐标数据 "category":["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]//横坐标数据 } 2、在标签中引入jQuery类库,(注意使用1.5版本以上类库,因为done()函数适用于1.5版本以上); 链接json文件: <script src...

qq_42092076的博客 4126
上一篇: 【自用笔记】关于移动端左滑返回的操作
林希雨
博客等级 码龄4年 84粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值