当前位置:   article > 正文

echarts动态添加数据

echarts动态添加数据

数据异步加载

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

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

准备要加载的数据文件data.json假数据实际项目中数据是由后台传递过来的,数据内容:

  1. {
  2. "name":["iso","english","china","ufo","seo"],
  3. "data":[400,200,300,100,11]
  4. }

  



第一种异步加载的时候设置图表参数和绑定数据,JavaScript中的代码如下:

  1. var container = document.getElementById('container');
  2. // 初始化echarts对象
  3. var myContainer = echarts.init(container);
  4. $.get('echarts.json', function(data) {//与服务器连接成功
  5. console.log(data);//获取到的json数据是个对象
  6. myContainer.setOption(option = {
  7. title:{
  8. text:'ECharts 异步加载数据'
  9. },
  10. tooltip:{},
  11. legend:{
  12. data:['访问量']
  13. },
  14. xAxis:{
  15. data:data.name
  16. },
  17. yAxis:{},
  18. series:[
  19. {
  20. name:'访问量',
  21. type:'line',
  22. data:data.data
  23. }
  24. ]
  25. });
  26. });

  

运行结果为

 

第二种先设置图表参数,后绑定数据。  JavaScript中的代码如下:

  1. // 初始化echarts对象
  2. var myContainer = echarts.init(document.getElementById('container'));
  3. myContainer.setOption(option = {
  4. title:{
  5. text:'echarts异步加载数据'
  6. },
  7. tooltip:{},
  8. legend:{},
  9. xAxis:{
  10. data:[]
  11. },
  12. yAxis:{},
  13. series:[
  14. {
  15. name:'访问量',
  16. type:'bar',
  17. data:[]
  18. }
  19. ]
  20. });
  21. $.get('echarts.json',function(res){
  22. // console.log(res);
  23. myContainer.setOption({
  24. xAxis:{
  25. data:res.name
  26. },
  27. series:[{
  28. data:res.data
  29. }
  30. ]
  31. });
  32. });

  

运行结果为:

 

Loading动画加载

  1. //打开loading动画
  2. myContainer.showLoading();
  3. //加载数据函数
  4. function bindData(){
  5. //为了效果明显,我们做了延迟读取数据
  6. setTimeout(function(){
  7. //异步加载数据
  8. $.get('echarts.json',function(res){
  9. //获取数据后,隐藏loading动画
  10. myContainer.hideLoading();
  11. myContainer.setOption(option = {
  12. title:{
  13. text:'echartsLoading加载'
  14. },
  15. tooltip:{},
  16. legend:{},
  17. xAxis:{
  18. data:res.name
  19. },
  20. yAxis:{},
  21. series:[
  22. {
  23. name:'访问量',
  24. type:'bar',
  25. data:res.data
  26. }
  27. ]
  28. });
  29. })
  30. },2000)
  31. }
  32. bindData();

由于运行的动态图上传有点麻烦,在这里我截图两张图片,分别是加载前与加载后:

加载后图片:

数据动态实时更新

数据实时更新的代码:

  1. var container = document.getElementById('container');
  2. // 初始化echarts对象
  3. var myContainer = echarts.init(container);
  4. var base = + new Date(2018,9,30);
  5. var oneDay = 24*3600*1000;
  6. var date = [];
  7. var data = [Math.random()*150];
  8. var now = new Date(base);
  9. var day = 30;
  10. function addData(shift){
  11. now = [now.getFullYear(),now.getMonth()+1,now.getDate()].join('/');
  12. date.push(now);
  13. data.push((Math.random()-0.5)*10+data[data.length-1]);
  14. if (shift) {
  15. console.log(data);
  16. date.shift();
  17. data.shift();
  18. }
  19. now = new Date(+new Date(now)+oneDay);
  20. }
  21. for (var i = 0; i < day; i++) {
  22. addData();
  23. }
  24. //设置图标配置项
  25. myContainer.setOption({
  26. title:{
  27. text:'ECharts 30天内数据实时更新'
  28. },
  29. xAxis:{
  30. type:"category",
  31. boundaryGap:false,
  32. data:date
  33. },
  34. yAxis:{
  35. boundaryGap:[0,'100%'],
  36. type:'value'
  37. },
  38. series:[{
  39. name:'成交',
  40. type:'line',
  41. smooth:true, //数据光滑过度
  42. symbol:'none', //下一个数据点
  43. stack:'a',
  44. areaStyle:{
  45. normal:{
  46. color:'pink'
  47. }
  48. },
  49. data:data
  50. }]
  51. })
  52. setInterval(function(){
  53. addData(true);
  54. myContainer.setOption({
  55. xAxis:{
  56. data:date
  57. },
  58. series:[{
  59. name:'成交',
  60. data:data
  61. }]
  62. });
  63. },1000)

  

运行图

改代码是上面数据加载方式的所有页面代码,可以直接复制,编辑查看运行效果。

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/828429
推荐阅读
相关标签
  

闽ICP备14008679号