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 相关文章推荐
js报错 Object doesn't support this property or method的原因分析
Mar 31 Javascript
jQuery选择器的工作原理和优化分析
Jul 25 Javascript
Jquery解析json数据详解
Dec 26 Javascript
BootStrap响应式导航条实例介绍
May 06 Javascript
Node.js connect ECONNREFUSED错误解决办法
Sep 15 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
Sep 27 Javascript
微信小程序 基础知识css样式media标签
Feb 15 Javascript
原生js实现鼠标跟随效果
Feb 28 Javascript
在 Node.js 中使用原生 ES 模块方法解析
Sep 19 Javascript
微信小程序button组件使用详解
Jan 31 Javascript
node.js实现微信开发之获取用户授权
Mar 18 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
Nov 07 Javascript
详解使用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 程序员应该使用的10个组件
2009/10/31 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
Python实现的简单算术游戏实例
2015/05/26 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
pyenv命令管理多个Python版本
2017/03/26 Python
python读取文件名称生成list的方法
2018/04/27 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
详解django2中关于时间处理策略
2019/03/06 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
苹果Mac升级:MacSales.com
2017/11/20 全球购物
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
数控专业毕业生求职信范文
2013/09/21 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书