Echarts实现动态折线图的定时刷新

这篇具有很好参考价值的文章主要介绍了Echarts实现动态折线图的定时刷新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在做项目的过程中,遇到一个需求:要从后台读取数据,并对echarts进行实时更新。先来看下实现的效果图:

echarts动态折线图,前端,echarts,前端,javascript,java,后端,Powered by 金山文档

首先来看一下没有和后台交互的echarts动态折线图如何实现,代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <link rel="stylesheet" href="bootstrap/css/bootstrap.css" />
        <script src="js/jquery-3.5.1.js"></script>
        <script src="js/echarts.min.js"></script>
        <script src="bootstrap/js/bootstrap.min.js"></script>
        
        <style>
            body{
                background-color: #02102c;
            }
        </style>
    </head>
    <body>
        <div>
            <div class="row" style="margin:20px 20px">
                <div class="col-md-5 col-md-offset-3" style="box-shadow: 2px 2px 5px #bbb;padding:10px 10px;border-radius:5px">
                    <div style="height:500px;" id="area" class="card-box"></div>
                    </div>
                </div>
                
            </div>
        </div>
    </body>

<script> 
    $(function(){
            var showTime = [];
            var showValue = [];
    
            var showArea = document.getElementById("area");
            var showChart = echarts.init(showArea);
            //先默认添加10个元素
            for(var i=0; i < 10; i++){
                showTime.push(getTime());
                showValue.push(Math.random());
            }
            
            var showOption = {
                      xAxis: {
                            type: 'category',
                            data: showTime,
                            axixLine:{
                                  show:true,
                                  lineStyle:{
                                      color:"#FFFFFF"
                                  }
                              },
                              axisLabel:{
                                  show:true,
                                  textStyle:{
                                      color:"#FFFFFF",
                                      fontSize:16
                                  }
                              },
                          },
                          yAxis: {
                            type: 'value',
                            axixLine:{
                                  show:true,
                                  lineStyle:{
                                      color:"#FFFFFF",
                                      wdith:5,
                                      type:"solid"
                                  }
                              },
                              axisLabel:{
                                  show:true,
                                  textStyle:{
                                      color:"#FFFFFF",
                                      fontSize:16
                                  }
                              },
                          },
                          series: [
                            {
                              data: showValue,
                              type: 'line',
                              symbolSize: 10,
                              lineStyle: {
                                color: '#FFFFFF',
                                width: 4
                              }
                            }
                          ]
                        };
            showChart.setOption(showOption);
            //获取时间
            function getTime(){
                let time = new Date();
                return time.toLocaleString();
            }
            //定时更新
            setInterval(function(){
                //当长度大于10时,去除数组首元素
                if(showTime.length > 10){
                    showTime.shift();showValue.shift();
                }
                //将新值添加到数组中
                showTime.push(getTime());
                showValue.push(Math.random());
                //重新绘制
                showChart.setOption({
                    xAxis: {
                        type: 'category',
                        data: showTime,
                        axixLine:{
                              show:true,
                              lineStyle:{
                                  color:"#FFFFFF"
                              }
                          },
                          axisLabel:{
                              show:true,
                              textStyle:{
                                  color:"#FFFFFF",
                                  fontSize:16
                              }
                          },
                      },
                      yAxis: {
                        type: 'value',
                        axixLine:{
                              show:true,
                              lineStyle:{
                                  color:"#FFFFFF",
                                  wdith:5,
                                  type:"solid"
                              }
                          },
                          axisLabel:{
                              show:true,
                              textStyle:{
                                  color:"#FFFFFF",
                                  fontSize:16
                              }
                          },
                      },
                      series: [
                        {
                          data: showValue,
                          type: 'line',
                          symbolSize: 10,
                          lineStyle: {
                            color: '#FFFFFF',
                            width: 4
                          }
                        }
                      ]
                });
            }, 2000);

            
        });
</script>
</html>

前面实现的是动态折现图并没有和后台交互,接下来看一下和后台交互的代码是如何实现的:

(1)首先是前端页面的修改

setInterval(function(){
        $.ajax({
            url:"后台的URL",
            data:{},
            async: true,
            dataType:"json",
         
            // 回调函数
            success:function (result) {
                showTime.shift();
                showValue.shift();
                showTime.push(getTime());
                showValue.push(result[0]);
                drawSituation();   
            },error:function(){
                 console.log("error");
            }
        });
        
    }, 1000);
    
    function drawSituation(){
        showChart.setOption({
            xAxis: {
                data: showTime,
              },
              series: [
                {
                  data: showValue,
                }
              ]
        });

(2)后台代码的实现

    @PrivilegeANTT(desc="测试")
    public void test() throws Exception {
        List<Double> list = new ArrayList<>();
        list.add(Math.random());
        this.renderJSON(list);
    }

后台只需要将数据以JSON方式返回即可。文章来源地址https://www.toymoban.com/news/detail-532557.html

到了这里,关于Echarts实现动态折线图的定时刷新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 基于 Apache ECharts 实现:柱状图、折线图、环形图等案例

    效果图 源代码 复用 如果想复用上面的代码,只需要把xAxis和series的data改下就行。 效果图 源代码 复用 如果想复用上面的代码,只需要把xAxis和series改下就行。 效果图 源代码 复用 如果想复用上面的代码,只需要把tooltip的data和series的data改下就行。 效果图 源代码 复用 如果

    2024年02月10日
    浏览(28)
  • 修改echarts的tooltip样式 折线图如何配置阴影并实现渐变色和自适应

    图片展示 这里不用多解释 vue里使用 import echarts from “echarts”; html页面引用js文件或用script标签引用 tooltip里的 模板字符串 dom结构 前端不方便调试效果图 可以先在dom里写好,调试好效果之后 在复制粘贴到 tooltip里的模板字符串 配置阴影和渐变色 在series里配置 normal: { color:

    2024年02月07日
    浏览(36)
  • echarts折线图颜色-折线图颜色设置-线条设置

    原图: 需要实现的效果: 需要设置xAxis和yAxis里的 axisLine 以及axisTick 图背景的横向每一条白线都改变颜色,需要设置 yAxis的splitLine里的lineStyle 只需要在 series 中添加 smooth: true ,即可 示例代码 smooth 还有其他的值 当type为line时 smooth 表示 是否平滑曲线显示。 如果是

    2024年02月16日
    浏览(40)
  • echarts折线图横向渐变填充

    这种情况,需要后端去计算,如何把不同分段的值赋予不同的颜色,然后组合成下面我们需要的格式就可以实现 后端返回数据 图例

    2024年02月16日
    浏览(28)
  • Echarts 折线图背景渐变色

    在资料上找到类似的,如下: 在许继项目红外传感器模块中使用自己编写的: 无渐变的: EchartsModule模块(使用): 效果图:

    2024年02月13日
    浏览(29)
  • javascript 实现自动定时刷新网页脚本

    利用脚本自动刷新页面模拟用户点击刷新页面(F5刷新),用于刷某些博客阅读量。 实现方法是把脚本写进控制台里面 废话不多说,看代码 把以上代码复制到控制台,然后回车就可以看到页面输入一个刷新时间就自动刷新页面了 如果要停止自动刷新页面的话,按F5刷一下当

    2024年02月12日
    浏览(31)
  • 超全的echarts折线图样式整理

    本次记录了echarts的折线颜色修改、自定义展示折线最后一个数值内容、自定义折线内容颜色、自定义折线图缩放展示、x轴线条粗细调整、x轴箭头单箭头调整、y轴线条粗细调整、自定义图例位置、自定义下载按钮颜色和大小设置等功能。 功能如下图: 详细代码如下: 如果感

    2024年02月11日
    浏览(31)
  • 【ECharts】从零实现echarts地图完整代码(纯前端,包含地图资源)

    这里忽略创建vue项目的操作过程,请自行搭建 vue2 项目 、 less 环境 安装下载 echarts 这里我们选择npm下载 安装成功后,在 main.js 中把echarts配置到this上 这里我建立了一个地图的组件,放在 hnMap 中 获取地图渲染json文件 这里我是通过下述的网址下载需要的地图 json 文件到本地

    2024年02月03日
    浏览(33)
  • 微信小程序使用ECharts----折线图

    微信小程序的开发者在很多情况下需要使用图形化数据展示,现有的 ECharts 这样的可视化工具由于一些原因并不能在微信小程序中使用。 因此,ECharts 团队和微信小程序官方团队合作,提供了 ECharts 的微信小程序版本。开发者可以通过熟悉的 ECharts 配置方式,快速开发图表,

    2024年04月15日
    浏览(53)
  • vue3使用 echarts - 饼图、折线图

    饼图 - 带中心图形 - graphic - elements 折线图 - 图表标记 markPoint

    2024年02月08日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包