前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Echarts异步加载和更新

Echarts异步加载和更新

作者头像
别团等shy哥发育
发布于 2023-02-25 09:10:42
发布于 2023-02-25 09:10:42
96800
代码可运行
举报
运行总次数:0
代码可运行

文章目录

一、前言

实现异步数据的更新非常简单,在图表初始化后不管任何时候只要通过 jQuery 等工具异步获取数据后通过 setOption 填入数据和配置项就行。

二、 代码实现步骤

1、引入插件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <!-- 引入 ECharts 文件 -->
    <script src="echarts.min.js"></script>

2、为 ECharts 准备 一个DOM 容器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="echarts" id="echarts_oilDailyAverage"></div>

3、通过 echarts.init 方法初始化一个echarts 实例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  var oilDailyAverageChart=echarts.init(document.getElementById('echarts_oilDailyAverage'));

4、异步加载数据

在异步获取到数据之后,生成图形(这个我后端将集合以JSON格式传到前端)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oilDailyAverageChart.hideLoading();
 var optionDailyAverage={ //加载数据图表
                    title:{
                        text:'日平均数据'
                    },
                    tooltip:{
                        show:true,
                        trigger: 'axis',
                        axisPointer : {            // 坐标轴指示器,坐标轴触发有效
                            type : 'cross'        // 默认为直线,可选为:'line' | 'shadow'
                        }
                    },
                    legend:{
                        data:['日产油水平','日产液水平','平均日产水','平均日产气']
                    },
                    toolbox: {                  //工具栏
                        show: true,               //显示工具栏组件
                        feature: {                //各工具配置项
                            mark: {
                                show: true
                            },
                            dataView: {
                                show: true,           //显示该工具
                                readOnly: false       //是否显示不可编辑(只读)
                            },
                            magicType: {            //动态类型切换
                                show: true,           //是否显示该工具
                                type: ['line', 'bar'] //启用的动态类型
                            },
                            restore: {              //配置项还原
                                show: true            //是否显示该工具
                            },
                            saveAsImage: {          //保存为图片
                                show: true            //是否显示该工具
                            }
                        }
                    },
                    xAxis:{
                        type:'category',
                        data:time
                    },
                    yAxis:[{
                        position:'left',
                        type:'value',
                        axisLabel:{
                            formatter:'{value}吨'
                        }
                    },{
                        position:'right',
                        type:'value',
                        axisLabel:{
                            formatter:'{value}立方米'
                        }
                    }],
                    series:[{
                        name:'日产油水平',
                        type:'bar',
                        yAxisIndex:0,
                        data:oilDaily,
                        itemStyle: {    //拐点显示值
                            normal: {
                                label: {
                                    show: true,  //开启显示
                                    position: 'top',  //在上方显示
                                    textStyle: {  //数值样式
                                        color: 'black',
                                        fontSize: 16
                                    }
                                }
                            }
                        }
                    },{
                        name:'日产液水平',
                        type:'bar',
                        yAxisIndex:0,
                        data:fluidDaily,
                        itemStyle: {    //拐点显示值
                            normal: {
                                label: {
                                    show: true,  //开启显示
                                    position: 'top',  //在上方显示
                                    textStyle: {  //数值样式
                                        color: 'black',
                                        fontSize: 16
                                    }
                                }
                            }
                        }
                    },{
                        name:'平均日产水',
                        type:'bar',
                        yAxisIndex:0,
                        data:waterDaily,
                        itemStyle: {    //拐点显示值
                            normal: {
                                label: {
                                    show: true,  //开启显示
                                    position: 'top',  //在上方显示
                                    textStyle: {  //数值样式
                                        color: 'black',
                                        fontSize: 16
                                    }
                                }
                            }
                        }
                    },{
                        name:'平均日产气',
                        type:'bar',
                        yAxisIndex:1,
                        data:gasDaily,
                        itemStyle: {    //拐点显示值
                            normal: {
                                label: {
                                    show: true,  //开启显示
                                    position: 'top',  //在上方显示
                                    textStyle: {  //数值样式
                                        color: 'black',
                                        fontSize: 16
                                    }
                                }
                            }
                        }
                    }]
                };
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  //先清除掉原来的数据
                oilDailyAverageChart.clear();
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  //渲染 设置为true时不跟之前设置的option进行合并
                oilDailyAverageChart.setOption(optionDailyAverage,true);
                //自适应宽度
                window.onresize=function(){
                    oilDailyAverageChart.resize();
                };
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//判断传来的是否是空值(若是空值,显示正在加载)
    function decideNull(time,oilDaily,fluidDaily,waterDaily,gasDaily,oilMonth,waterMonth,gasMonth,oilPress,casingPress,backPress,
    waterContentMonth,oilGasRatio,createDays,oilSalinity,oilDynamic) {
        if (time.length==0){
            oilDailyAverageChart.showLoading();
            numMonthChart.showLoading();
            pressDataChart.showLoading();
            percentageChart.showLoading();
            dynamicSalinityChart.showLoading();
        }else{
            if (oilDaily.length==0||fluidDaily.length==0||waterDaily.length==0||gasDaily.length==0){
                oilDailyAverageChart.showLoading();
            }else if (oilMonth.length==0||waterMonth.length==0||gasMonth.length==0){
                numMonthChart.showLoading();
            }else if (oilPress.length==0||casingPress.length==0||backPress.length==0){
                pressDataChart.showLoading();
            }else if (waterContentMonth.length==0||oilGasRatio.length==0||createDays.length==0){
                percentageChart.showLoading();
            }else if (oilSalinity.length==0||oilDynamic.length==0){
                dynamicSalinityChart.showLoading();
            }
        }
    }

三、渲染之后的效果

四、bug及解决方案

1、生成图形不适配外层div:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
				//自适应宽度
                window.onresize=function(){
                    oilDailyAverageChart.resize();
                };

2、在数据更新时没有清除上一次的旧数据

第一种:可以采取在setOption后面加一个参数来解决问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oilDailyAverageChart.setOption(optionDailyAverage,true);

第二种:在每次更新之前,先调用clear方法

清空当前实例,会移除实例中所有的组件和图表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 oilDailyAverageChart.clear();

3、如果后端传递过来的集合为空,页面不变化

解决:这里我在js里面判空处理,若后端传递过来的对象为空,就调用 oilDailyAverageChart.showLoading();方法,让页面一直显示加载动画。

这不是最好的方法,其他大佬的方法也挺多的: 1、有的是数据为空时用一张特殊的图片替换掉渲染的图形,数据正常时就隐藏掉那张特殊图片。 2、 oilDailyAverageChart.showLoading();

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用百度图表ECharts
百度图表已经用过好几次了,但是今天准备把博客的访问情况可视化的时候发现,又得去官网看文档做。 有些还要找,所以记录一下,毕竟这玩意用的比较多。
sunonzj
2022/06/21
1.8K0
使用百度图表ECharts
Echarts中dataZoom添加滚动条
1、dataZoom配置 dataZoom: [{ //默认控制x轴 type:'slider',//图标下方的伸缩条 show:true,//是否显示 xAxisIndex:[0], //控制x轴,数组可以同时控制多个轴 realtime:tr
别团等shy哥发育
2023/02/25
2.2K0
Echarts中dataZoom添加滚动条
Echarts与SSM框架交互
Echarts与SSM框架交互 1、实现效果: 数据库表结构 名 类型 注释 id varchar 宿舍分配编号 alreadyNumber int 已住人数 allNumber int 可住人数 status varchar 是否住满 sex varchar 男生/女生宿舍 2、前端代码: <!--宿舍分配情况可视化--> <div class="col-sm-12"> <div class="ibox-content"> <
别团等shy哥发育
2023/02/25
4570
Echarts与SSM框架交互
ECharts常用配置项
ECharts是我们常用的图表控件,功能特别强大,每次使用都要查API比较繁琐,这里就记录开发中常用的配置。
码客说
2021/12/31
4K0
ECharts常用配置项
echarts中地图和统计图的简单使用
各个省份地图json下载地址: https://github.com/apache/incubator-echarts/tree/master/map 或者点击这里 链接:https://pan.baidu.com/s/11d-vKVEip7InOOlu8si8RA 提取码:b397
不愿意做鱼的小鲸鱼
2022/09/26
1.3K0
echarts中地图和统计图的简单使用
Echarts5.3.2可视化案例-应用篇
参考: https://github.com/sutianbinde/charts https://www.runoob.com/html/html5-canvas.html https://www.cnblogs.com/chengduxiaoc/p/7664397.html 效果:
用户2225445
2022/11/12
2.1K0
Echarts5.3.2可视化案例-应用篇
echarts图 示例
版权声明:Copyright © https://blog.csdn.net/zzw19951261/article/details/84774183
zhengzongwei
2019/07/30
6010
Echarts中最大值、最小值、平均值显示
Echarts中最大值、最小值、平均值配置 1、简述 2、最大值、最小值、平均值的配置: 3、页面效果: 1、简述 markPoint标注 markLine标线 2、最大值、最小值、平均值的配置: series:[{ name:'日配注水量', type:'bar', yAxisIndex:0, data:waterAllo
别团等shy哥发育
2023/02/25
2.6K0
Echarts中最大值、最小值、平均值显示
ECharts 配置语法
ECharts 配置语法
Java架构师必看
2021/05/14
2.6K0
echarts2简单笔记
1、代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> bod
用户1174387
2019/05/25
1.2K0
【数据可视化】Echarts官方文档及常用组件
前面介绍了柱状图、折线图、饼图3种最为常见图表的绘制和使用:【数据可视化】Echarts最常用图表,但是没有介绍在遇到问题时如何寻求帮助,也没有详细介绍图表中组件的使用。这次来介绍ECharts中官方文档、常用组件的使用方法,可以更加快捷地创建清晰明了、实用的图表。 以下代码均在VScode中使用。
zxctscl
2024/03/21
2.7K0
【数据可视化】Echarts官方文档及常用组件
大数据工程师必备之数据可视化技术
也有其他类的软件做可视化:一则使用,一则是开发。使用有成品的软件可以使用,一些SPSS软件、Tableau。开发使用的是echarts、Hights、D3等一些可视化的工具和库。
张哥编程
2024/12/13
5690
大数据工程师必备之数据可视化技术
echarts在react中的引入使用(俩种方法)
一.第一步 先看看你的echarts版本。 小于5.0版本的可以使用以下方法: 先安装: npm i echarts@4.0.4 --save npm i echarts-for-react --save 1.原始echarts 导入 import React from 'react' // 引入 ECharts 主模块 import echarts from 'echarts/lib/echarts' // 引入饼图 import 'echarts/lib/chart/bar' // 引入提示框和标题组
biaoblog.cn 个人博客
2022/08/11
13.8K0
前端ECharts框架绘制各种图形
ECharts 是一个开源的来自百度前端数据可视化团队,使用 JavaScript 实现的开源可视化库,是一个纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表,涵盖各行业图表,满足各种需求。
王瑞MVP
2022/12/28
9590
ECharts 异步加载数据
ECharts 异步加载数据
Java架构师必看
2021/05/14
1.2K0
ajax+json实现echarts多个统计图显示
前端时常会遇到这样的问题,有一个单独的模块用作统计图,将多个折线或者柱状图,混合使用,下面的例子是用ajax+json模拟了调用接口实现echarts多个统计图显示。 样式布局暂时就不放在上面了,以下是从项目里面复制过来的一个小的demo,代码仅供参考。
王小婷
2019/09/19
2.7K0
echarts饼图显示百分比[echarts字体模糊]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说echarts饼图显示百分比[echarts字体模糊],希望能够帮助大家进步!!!
Java架构师必看
2022/04/06
2.8K0
echarts饼图显示百分比[echarts字体模糊]
echarts标题字体大小_echarts饼图显示百分比
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/124677.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/03
5660
echarts标题字体大小_echarts饼图显示百分比
百度开源插件echarts介绍及如何使用
如果你想要用较少的代码实现比较酷炫的数据统计表,echarts是值得你考虑的一种实现方式。官网提供了很多实例供参考:http://echarts.baidu.com/examples.html。感兴趣可以先一睹为快!!!
huofo
2022/03/17
1.9K0
百度开源插件echarts介绍及如何使用
echarts 从0到1
除了通过独立配置每一图表数据, echart 提供 dataset 集中管理实例内的数据集合。
copy_left
2021/12/08
1.3K0
相关推荐
使用百度图表ECharts
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验