echarts整合多个类似option的方法实例


Posted in Javascript onJuly 10, 2018

前言

最近项目里面遇到一些图表需要用echarts来做。而我之前只用过一次echarts,也只是做了一个简单的饼状图,并没有涉及到很多的配置。但是现在这个项目,这些图表需要自己配置很多东西。像什么多余的网格线不显示啊,每个柱子的不一样的颜色渐变啊,这些都还好。问题在一个页面有多个柱状图,而这些柱状图除了数据和颜色不一样其他的都一毛一样。最后模仿老大做的整合多个option自己做了一个demo,自己写了详细的注释。

效果图如下:

echarts整合多个类似option的方法实例

html代码如下:

<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
 <div id="chart1" style="width: 300px;height:300px;"></div>
 <div id="chart2" style="width: 300px;height:300px;"></div>
 <div id="chart3" style="width: 300px;height:300px;"></div>
 <div id="chart4" style="width: 300px;height:300px;"></div>
 <script src="aa.js"></script>
 <script>
 new aa();
 </script>

js代码如下:

function aa(){
 //初始化加载图表
 this.initchart();
}
aa.prototype = {
 initchart:function(){
  //定义每个图表的颜色数组,我这里是渐变色的柱子,有四个
   var color = [ "#ad3f3b", "#df8380","#89a54e","#b7c894","#3c8d91","#78b1b5","#db853c","#f2b582"];
  var dex = 0;
  //遍历装图表的盒子
  for(var i = 1; i <= 4; i++){
   //把echarts初始化图表的方法提出来通过拼接id的方法找到每个div的id
   var chart = echarts.init(document.getElementById('chart'+ i));
   //把option做成一个变量,通过传参来初始化每个图 new echarts.graphic.LinearGradient是eachsrts柱子渐变的方法
   //传递的参数有图表的名字,渐变的颜色,和所对应的单位
   var option = this.optionFun("销售额", new echarts.graphic.LinearGradient(0,0,0,1,[
    {offset:0,color: color[dex++]},
    {offset:1,color:color[dex++]}
   ]), "单位");
    //常规操作 为echarts对象加载数据 
   chart.setOption(option);
  }
 },
 //然后接下来都是一些echarts的一些常规配置
 optionFun:function(title,color,unit){
  var option = {
   title:{
    text:title,
    left:'center',
    textStyle:{
     fontStyle:'normal',
     fontSizeL:'14px',
    },
    top:'top',
   },
   xAxis:{
    type:'category',
    data:['目标','完成'],
    axisLine:{
     lineStyle:{
      color:'#999',
     },
    },
    axisLabel:{
     textStyle:{
      color:'#333',
     },
    },
   },
   yAxis:{
    type:'value',
    name:unit,
    nameLocation:'start',
    nameTextStyle:{
     color:'#333',
    },
    axisLine:{
     lineStyle:{
      color:'#999',
     }
    },
    axisLabel:{
     textStyle:{
      color:'#333',
     },
    },
    splitLine:{
     show:false,
    },
   },
   series:[{
    data:data,//后台传过来的数据[98,57]
    type:'bar',
    barWidth:20,
    itemStyle:{
     normal:{
      color:color,
      barBorderRadius:2,
      shadowColor:'rgba(4,13,31,0.5)',
      shadowBlur:5,
      shadowOffsetX:2,
      shadowOffsetY:0,
      label:{
       show:true,
       position:'top',
       textStyle:{
        color:'#333',
       },
      },
     }
    }
   }],
  };
  //将option返回
  return option;
 }
}

其实后来发现,echarts一些常规的配置在官方给的文档里面都有,就是自己不太熟悉。最主要的还是自己掌握的东西太少了,不懂的融会贯通。也更加清楚了js对于一个前端来说是多么的重要。而我自己也在不断的努力中,很感谢我老大,很多不懂的地方问他,他都会帮我解决。继续加油吧。

注:这个配置目前不支持图表数量超过所定义的颜色数量后颜色循环,或许以后多研究下可以实现,但是目前是不支持的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
js程序中美元符号$是什么
Jun 05 Javascript
TinyMCE 新增本地图片上传功能
Nov 05 Javascript
Jquery为a标签的href赋值实现代码
May 03 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 Javascript
jQuery实现立体式数字动态增加(animate方法)
Dec 21 Javascript
JS实现的文字间歇循环滚动效果完整示例
Feb 13 Javascript
javascript高仿热血传奇游戏实现代码
Feb 22 Javascript
详解写好JS条件语句的5条守则
Feb 28 Javascript
Vue动态修改网页标题的方法及遇到问题
Jun 09 Javascript
ES6模板字符串和标签模板的应用实例分析
Jun 25 Javascript
关于Vue Router的10条高级技巧总结
May 06 Vue.js
详解使用Next.js构建服务端渲染应用
Jul 10 #Javascript
node.js中TCP Socket多进程间的消息推送示例详解
Jul 10 #Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
Jul 10 #Javascript
JavaScript中 ES6变量的结构赋值
Jul 10 #Javascript
vue超时计算的组件实例代码
Jul 09 #Javascript
微信小程序自定义底部弹出框
Nov 16 #Javascript
详解vue中组件参数
Jul 09 #Javascript
You might like
PHP字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
php设计模式 Facade(外观模式)
2011/06/26 PHP
php数组一对一替换实现代码
2012/08/31 PHP
php向js函数传参的几种方法
2014/08/10 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
javascript document.referrer 用法
2009/04/30 Javascript
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
jquery easyui使用心得
2014/07/07 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
Python编程中装饰器的使用示例解析
2016/06/20 Python
基于python3的socket聊天编程
2020/02/17 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
优秀导游先进事迹材料
2014/01/25 职场文书
物理专业本科生自荐信
2014/01/30 职场文书
端午节活动总结
2014/08/26 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
党员个人自我评价
2015/03/03 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技