ECharts.js学习(二)动态数据绑定

Echarts 数据绑定

简单的统计表已经可以生成,不过之前图标数据都是直接写在参数里面的,而实际使用中,我们的数据一般都是异步读取的。EChart.js对于数据异步读取这块提供了异步加载的方法。

绑定多组数据

很多时候需要展示的数据不单单是一组数据,很多时候会进行一个数据对比。这个时候只需要在series中增加一组数据,legend中添加一下这个数据组的name

<!DOCTYPE html>
<html>
<head>
    <title>ECharts.js 数据绑定</title>
    <meta charset="utf-8">
    <script type="text/javascript" src="js/echarts.js"></script>
</head>
<body>
    <div id="chartmain" style="width:600px; height: 400px;"></div>
    <script type="text/javascript">
        //指定图标的配置和数据
        var option = {
            title:{
                text:‘ECharts 数据统计‘
            },
            legend:{
                data:[‘访问量‘,‘用户量‘]
            },
            xAxis:{
                data:["Android","IOS","PC","Other"]
            },
            yAxis:{},
            series:[
            {
                name:‘访问量‘,
                type:‘bar‘,
                data:[180,420,333,83]
            },
            {
                name:‘用户量‘,
                type:‘bar‘,
                data:[125,330,230,60]
            }
            ]
        };
        //初始化echarts实例
        var myChart = echarts.init(document.getElementById(‘chartmain‘));

        //使用制定的配置项和数据显示图表
        myChart.setOption(option);
    </script>
</body>
</html>

效果展示

数据异步加载

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

绑定数据的方式有两种,一种是写写好一些图表参数,然后数据留空,然后在异步读取数据的时候,绑定数据。还有一种就是直接异步读取数据的时候同时设置图表参数和数据绑定。

首先我们准备一份需要加载的数据文件data.json,数据内容:

{"name":["Android","IOS","PC","Other"],"data":[420,200,360,100]}

第一种异步加载的时候设置图表参数和绑定数据

    <script type="text/javascript">
        //初始化echarts实例
        var myChart = echarts.init(document.getElementById(‘chartmain‘));
        //异步加载的配置项和数据显示图表
        $.get(‘data.json‘).done(function (data) {
            data = eval(‘(‘+data+‘)‘);
            myChart.setOption({
                title:{
                    text:‘ECharts 异步加载数据‘
                },
                tooltip:{},
                legend:{
                    data:[‘访问量‘]
                },
                xAxis:{
                    data:data.name
                },
                yAxis:{},
                series:[
                    {
                        name:‘访问量‘,
                        type:‘bar‘,
                        data:data.data
                    }
                ]
            })
        })

    </script>

第二种先设置图表参数,后绑定数据

<script type="text/javascript">
        //初始化echarts实例
        var myChart = echarts.init(document.getElementById(‘chartmain‘));
        //设置图标配置项
        myChart.setOption({
            title:{
                text:‘ECharts 异步加载数据‘
            },
            tooltip:{},
            legend:{
                data:[‘访问量‘]
            },
            xAxis:{
                data:[]
            },
            yAxis:{},
            series:[
                {
                    name:‘访问量‘,
                    type:‘bar‘,
                    data:[]
                }
            ]
        })
        //异步加载数据
        $.get(‘data.json‘).done(function (data) {
            data = eval(‘(‘+data+‘)‘);
            myChart.setOption({
                xAxis:{
                    data:data.name
                },
                series:[
                    {
                        //根据名字对应到相应的系列
                        name:"访问量",
                        data:data.data
                    }
                ]
            })
        })
    </script>

效果展示

因为是异步加载,所以有时候数据加载会慢,或者延迟。在数据没有加载前,图表这样的。面对这样的图表,肯定会觉得这是没有数据吗,还是图表有问题.对于这块ECharts增加了一个加载动画。

Loading动画加载

        //打开loading动画
        myChart.showLoading();
        //加载数据函数
        function bindData(){
            //为了效果明显,我们做了延迟读取数据
            setTimeout(function(){
                //异步加载数据
                $.get(‘data.json‘).done(function (data) {
                    //获取数据后,隐藏loading动画
                    myChart.hideLoading();
                    data = eval(‘(‘+data+‘)‘);
                    myChart.setOption({
                        xAxis:{
                            data:data.name
                        },
                        series:[
                            {
                                //根据名字对应到相应的系列
                                name:"访问量",
                                data:data.data
                            }
                        ]
                    })
                })
            },2000)
        }

        bindData();        

效果展示

数据动态实时更新

<script type="text/javascript">
    //初始化echarts实例
    var myChart = echarts.init(document.getElementById(‘chartmain‘));
    var base = + new Date(2017,3,8);
    var oneDay = 24*3600*1000;
    var date = [];
    var data = [Math.random()*150];
    var now = new Date(base);
    var day = 30;
    function addData(shift){
        now = [now.getFullYear(),now.getMonth()+1,now.getDate()].join(‘/‘);
        date.push(now);
        data.push((Math.random()-0.5)*10+data[data.length-1]);
        if (shift) {
            console.log(data);
            date.shift();
            data.shift();
        }
        now = new Date(+new Date(now)+oneDay);
    }

    for (var i = 0; i < day; i++) {
        addData();
    }
    //设置图标配置项
    myChart.setOption({
        title:{
            text:‘ECharts 30天内数据实时更新‘
        },
        xAxis:{
            type:"category",
            boundaryGap:false,
            data:date
        },
        yAxis:{
            boundaryGap:[0,‘100%‘],
            type:‘value‘
        },
        series:[{
            name:‘成交‘,
            type:‘line‘,
            smooth:true, //数据光滑过度
            symbol:‘none‘, //下一个数据点
            stack:‘a‘,
            areaStyle:{
                normal:{
                    color:‘red‘
                }
            },
            data:data
        }]
    })
    setInterval(function(){
        addData(true);
        myChart.setOption({
            xAxis:{
                data:date
            },
            series:[{
                name:‘成交‘,
                data:data
            }]
        });
    },1000)
</script>

效果展示

来源:http://www.cnblogs.com/leoxuan/p/6513591.html#top

时间: 2024-11-09 10:47:56

ECharts.js学习(二)动态数据绑定的相关文章

JS学习二

函数作用域和声明提前 var scope = 'global'; function f() { console.info(scope);   //输出undefined var scope = 'local'; console.info(scope);  //输出 local } 上述代码等价于 function f() { var scope; console.info(scope); scope = 'local'; console.info(scope); } 将函数内的变量声明"提前&q

ECharts.js学习(三)交互组件

ECharts.js 交互组件 ECharts.js有很多的交互组件,一般经常用到的组件有这些: title:标题组件,包含主标题和副标题. legend:图例组件,展现了不同系列的标记(symbol),颜色和名字.可以通过点击图例控制哪些系列不显示. xAxis:直角坐标系 grid 中的 x 轴,一般情况下单个 grid 组件最多只能放左右两个 x 轴,多于两个 x 轴需要通过配置 offset 属性防止同个位置多个 x 轴的重叠. yAxis:直角坐标系 grid 中的 y 轴,一般情况下

ECharts.js学习(一) 简单入门

EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart   这个是Visual Studio里的自带控件,使用比较简单,不过数据这块需要在后台绑定. ichartjs 是一款基于HTML5的图形库.使用纯javascript语言, 利用HTML5的canvas标签绘制各式图形. 支持饼图.环形图.折线图.面积图.柱形图.条形图等. Chart.js 也是一款基于HTML5的图形库和ichartjs整体类似.不

Vue.js学习笔记: 数据绑定语法---插值

文本:数据绑定最基础的形式就是文本插值,使用一对双大括号 双大括号标签会被相应数据对象的msg属性的值替换,每当这个属性变化时它也会更新 HTML: <span id="test01">Message:{{msg}}</span> JS: var vm = new Vue({     el:'#test01',     data:{         msg:'数据绑定语法--文本插值'     } }); 也可以只处理单次插值,今后的数据变化就不会再引起插值更新

Vue.js学习笔记: 数据绑定语法---绑定表达式

1.JavaScript表达式 放在双大括号标签内的文本称为绑定表达式.在Vue.js中,一段绑定表达式由一个简单的JS表达式和可选的一个或多个过滤器构成 HTML: <span id="test01">数字加减:{{number+1}}</span><br> <span id="test02">三目运算:{{ok?'yes':'no'}}</span><br> <span id=&quo

JS学习之动态加载script和style样式

前提:我们可以把一个网页里面的内容理解为一个XML或者说网页本身也就是一个XML文档,XML文档都有很特殊的象征:"标签"也叫"节点".我们都知道一个基本的网页格式是 <!DOCTYPE /> <head></head> <body><body /> 这些是最基本的形态,但是其实它省略了最外面的一个标签<document>. <document> <!DOCTYPE />

Angular.js 学习二---$scope和$rootScope,Angular模块的run方法,依赖注入中代码压缩

一.$scope和$rootScope的区别 一句话总结: $rootScope针对全局的作用域生效 $scope只针对当前的controller作用域生效 二.AngularJS模块的run方法 run方法初始化全局的数据,只对全局作用域起作用 如$rootScope <script type="text/javascript"> var m1 = angular.module('myApp', []); m1.run(['$rootScope', function ($

【Node.js 学习二】 NPM的使用

NPM是随同Node.js一起安装的包管理工具,能解决NOdeJs代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器中下载别人编写的第三方包到本地使用 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用 允许用户将自己编写的包或者命令行程序上传到NPM服务器供别人使用 由于新版的NodeJs已经集成了NPM,所以之前npm也一并安装好了,同样可以通过输入"npm -v"来测试是否安装成功.命令如下,显示出版本号则表示安装成功. //Windows环境下

Nuxt.js学习(二) --- Nuxt目录结构详解、Nuxt常用配置项、Nuxt路由配置和参数传递

[TOC] 1.Nuxt目录结构详解 Nuxt项目文件目录结构 |-- .nuxt // Nuxt自动生成,临时的用于编辑的文件,build |-- assets // 用于组织未编译的静态资源入LESS.SASS 或 JavaScript |-- components // 用于自己编写的Vue组件,比如滚动组件,日历组件,分页组件 |-- layouts // 布局目录,用于组织应用的布局组件,不可更改. |-- middleware // 用于存放中间件 |-- pages // 用于存放