echarts异步数据加载(在下拉框选择事件中异步更新数据)

简介: 接触echarts 大半年了,从不会到熟练也做过不少的图表,隔了一段时间没使用这玩意,好多东西真心容易忘了。在接触echarts这期间也没有总结什么东西,今天我就来总结一下如何在echart中异步加载数据,在实际的工作的中对数据的刷选非常常见,比如在下拉框中选择,时间选择等的一些事件中异步加载数据。

接触echarts 大半年了,从不会到熟练也做过不少的图表,隔了一段时间没使用这玩意,好多东西真心容易忘了。在接触echarts这期间也没有总结什么东西,今天我就来总结一下如何在echart中异步加载数据,在实际的工作的中对数据的刷选非常常见,比如在下拉框中选择,时间选择等的一些事件中异步加载数据。一个很常见的筛选如图:


下面我就直接用代码来实现怎样在事件刷选中异步刷新数据

 //路径配置
    require.config({
        paths: {
            echarts: "/Scripts/echarts-2.2.7/build/dist"
        }
    });
    var MYCHART;  //声明一个大写的全局变量,能不用全局的尽量就不要用全局变量
    //使用
    require(['echarts',      
        'echarts/chart/bar'],  //按需加载
        function (ec)
        {
            //实例dom
             MYCHART = ec.init(document.getElementById("main"));
            var option = {
                tooltip: {
                    show: true
                },
                legend: {
                    data: ['得分']
                },
                xAxis: [
                    {
                        type: "category",
                        data:['']
                      //  data:["科比", "欧文", "詹姆斯", "库里", '杜兰特', '威少', '韦德']
                    }
                ],
                yAxis: [
                    {
                        type: "value"
                    }
                ],
                series: [
                    {
                        "name": "得分",
                        "type": "bar",
                         data:['']
                         //data:[20102, 2000, 1200, 1002, 1204, 4545, 7878]
                    }
                ]
            }
            console.info(MYCHART);
            //位echart对象加载数据
            MYCHART.setOption(option,true);
            loadOption(2011);//使用ajax同步加载数据
        }
    )

其实我也很纳闷了,这个xAxis中data属性是一个数组,series中data也是一个数组,如果直接不写任何数据,在loadOption方法中,再获取MACHAT.option中会找不到series,xAxis ,option倒是能获取到,但是这个对象是空的。这让我很奇怪,所以只能先写一个空字符串了。

    //ajax 异步加载配置数据项
    function loadOption(year)
    {
        $.ajax({
            url: '/Home/GetJson?year='+year,
            type: 'get',
            dataType: 'json',
            async: false,
            success: function (result) {
                if (result)
                {
                    var option = MYCHART._option;  //e2中感觉这个命名十分奇怪,居然要这样获取,必须先设置才有这个属性
                    debugger
                    if (result.seriesData == null) {
                        option.series[0].data = [''];
                        option.xAxis[0].data = ['']
                    }
                    else {
                        option.series[0].data = result.seriesData;
                        option.xAxis[0].data = result.xAxisData;
                    }
                    MYCHART.setOption(option,true);
                }
            },
            error: function ()
            {
                alert("不好意思请求失败了");
            }
        })
    }

要注意这两点

1.刚开始的时候我也很奇怪,获取option 属性居然有这样获取MYCHART._option 。在e3直接MYCHART.getOption()就可以获取到。

2.echarts图表动态刷新数据不能清空数据,这是因为多次调用option默认是合并的Merge ,文档里说设置第二个参数为true就ok ,如上MYCHART.setOption(option,true)


下拉框选择年份事件:

    function yearChange(selectObj)
    {
        var year = $(selectObj).val();
        loadOption(year);
    }

实际运行的效果图如下:



echarts图表中值得注意两点上面已经说了,一个数据动态加载数据没有清除数据,一个获取option必须先setOption才能获取到。但是我郁闷的是如果不给series 中data属性设值,xAxis中data属性设值获取到的option是一个空的object。虽然实现整个下拉选择事件动态加载数据的功能,但是代码还是得优化一下。

整个思路就是同步执行ajax加载数据,设置option中的属性。还是要注意方法调用的循序。经常会underfined地报错,debugger的时候看的很清楚。

下载地址:http://download.csdn.net/detail/kebi007/9742894

作者:张林

标题: echarts异步数据加载(在下拉框选择事件中异步更新数据)原文地址:http://blog.csdn.net/kebi007/article/details/54663620

转载随意注明出处


目录
相关文章
|
1月前
|
JSON JavaScript 定位技术
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
130 1
|
6月前
|
前端开发 JavaScript BI
Django教程第5章 | Web开发实战-数据统计图表(echarts、highchart)
使用echarts和highcharts图表库实现折线图、柱状图、饼图和数据集图
162 2
|
6月前
|
前端开发 算法 数据可视化
怎么在echarts图上左右滑动切换数据区间
怎么在echarts图上左右滑动切换数据区间
222 0
|
6月前
|
数据可视化
echarts图表坐标轴数据标签添加下划线
echarts图表坐标轴数据标签添加下划线
208 0
|
2月前
|
JavaScript 定位技术
echarts地图数据信息流向图效果
本文介绍了如何使用 ECharts 创建一个地图数据信息流向图效果,包括设置地理坐标、线条动画和流向图的实现方法,并通过 Vue.js 封装了一个可重用的 ECharts 地图组件。
132 23
echarts地图数据信息流向图效果
|
1月前
|
JavaScript API
Echarts中单独为每个legend图例设置样式-根据数据正负显示不同样式
通过上述方法,我们便能够在ECharts中根据数据的正负为每个图例项设置不同的样式,增强了图表的可读性和表现力。这种方法虽然略显间接,但不失为一种灵活的解决方案。
63 2
|
1月前
|
JSON JavaScript 前端开发
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
383 0
|
3月前
|
JavaScript 数据可视化 BI
echarts的使用 超好用的报表制作、数据的图形化展示
您提供的链接是关于echarts使用的博客文章,它介绍了如何使用echarts进行数据的图形化展示,包括制作报表和图表。echarts是一个强大的数据可视化工具,能够创建折线图、柱状图、饼图等多种图表类型。文章还提供了一个Demo演示和项目结构的图片,以及官网链接供读者参考。
echarts的使用 超好用的报表制作、数据的图形化展示
|
3月前
|
XML SQL JavaScript
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
这篇文章介绍了如何在Vue页面中结合SpringBoot、MyBatis、ElementUI和ECharts,实现从数据库获取数据并展示为图表的过程,包括前端和后端的代码实现以及遇到的问题和解决方法。
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
|
3月前
|
JavaScript
Echarts——VUE中如何给echarts绑定click事件
Echarts——VUE中如何给echarts绑定click事件
184 1