ichart.js绘制虚线、平均分虚线效果的实现代码


Posted in Javascript onMay 05, 2016

ichart.js绘制虚线、平均分虚线效果的实现代码

var Data=new Array(); 
    Data[0] = { 
      labels : ["第一单元","第二单元","第三单元","第四单元","第五单元"], 
      datasets : [ 
        { 
          name : '优秀率', 
          color:'#1dbcfe', 
          line_width:4, 
          value : [80,75,92,62,0] 
        } 
      ] 
    } 
    Data[1] = { 
      labels : ["第一单元","第二单元","第三单元","第四单元","第五单元"], 
      datasets : [ 
        { 
          name : '优秀率', 
          color:'#1dbcfe', 
          line_width:4, 
          value : [50,11,62,77,90] 
        } 
      ] 
    } 
    Data[2] = { 
      labels : ["第一单元","第二单元","第三单元","第四单元","第五单元"], 
      datasets : [ 
        { 
          name : '优秀率', 
          color:'#1dbcfe', 
          line_width:4, 
          value : [80,51,32,44,80] 
        } 
      ] 
    } 
     
    var _bodyWidth=$('body').width()-16; 
    $('.item').each(function(i){ 
      var _id=$(this).find('.canvas-wrap').attr('id'); 
      var chart = new iChart.LineBasic2D({ 
        render : _id, 
        data: Data[i].datasets, 
        align:'center', 
        border:0, 
        width : _bodyWidth*2, 
        height : _bodyWidth*1.2, 
        background_color:'#fafafa', 
        animation : true,//开启过渡动画 
        animation_duration:600,//600ms完成动画 
         
        sub_option : { 
          smooth : true, 
          hollow:false, 
          hollow_inside:false, 
          point_size:16, 
          listeners : { 
            parseText : function(r, t) { 
              return t+'%'; 
            } 
          }, 
          label:{fontsize:24,color:'#333'}, 
        }, 
        coordinate:{ 
          width:_bodyWidth*1.6, 
          valid_width:_bodyWidth*1.4, 
          height:_bodyWidth*1.6*.5, 
          striped_factor : 0.18, 
          axis:{ 
            color:'#aaa', 
            width:[0,0,8,0] 
          }, 
          scale:[{ 
             position:'left',  
             start_scale:0, 
             end_scale:100, 
             scale_space:20, 
             scale_size:2, 
             scale_enable : false, 
             label : {color:'#999',fontsize:24}, 
             scale_color:'#999'
          },{ 
             position:'bottom', 
             label : {color:'#999',fontsize:24}, 
             scale_enable : false, 
             labels:Data[i].labels 
          }] 
        } 
         
      }); 
      /** 
       *自定义组件,画平均线。 
       */
      chart.plugin(new iChart.Custom({ 
          drawFn:function(){ 
            /** 
             *计算平均值的高度(坐标Y值) 
             */ 
             var _total=0; 
            $.each(Data[i].datasets[0].value,function(i,val){ 
              _total+=val; 
            }); 
            var avg = _total/Data[i].datasets[0].value.length,//计算出的平均分写在这即可 
              coo = chart.getCoordinate(), 
              x = coo.get('originx'), 
              W = coo.width, 
              S = coo.getScale('left'), 
              H = coo.height, 
              h = (avg - S.start) * H / S.distance, 
              y = chart.y + H - h; 
            for(xi=x;xi<=(x+W);xi=xi+32){ 
              chart.target.line(xi,y,xi+16,y,2,'#fe941c'); 
            } 
            chart.target.textAlign('start') 
            .textBaseline('middle') 
            .textFont('500 20px Verdana') 
            .fillText('平均战胜率'+avg+'%',x+W-100,y-20,false,'#fe941c'); 
          } 
      })); 
      chart.draw(); 
    });

以上代码是绘制多个折线图的js示例,以及在每个折线图内绘制平均分虚线的方法。

ichart.js是一个十分不错的图标绘制js,缺点是在移动端需要先设置两倍大小,再用css和js手动缩小到正常范围,以使其在屏幕上保持高清。

官网有绘制平均线的示例,但是没有虚线的,而一般为了不混淆,平均线都是使用虚线绘制的。这里我只是循环绘制了n端直线,算是一个变通的方法。如有更好的方法请留言哦谢谢。

以上这篇ichart.js绘制虚线、平均分虚线效果的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
鼠标经过tr时,改变tr当前背景颜色
Jan 13 Javascript
jquery及js实现动态加载js文件的方法
Jan 21 Javascript
Vue.js每天必学之内部响应式原理探究
Sep 07 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
Nov 07 Javascript
js调用屏幕宽度的简单方法
Nov 14 Javascript
微信小程序开发经验总结(推荐)
Jan 11 Javascript
gulp解决跨域的配置文件问题
Jun 08 Javascript
微信小程序自定义音乐进度条的实例代码
Aug 28 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
Jul 04 Javascript
axios 实现post请求时把对象obj数据转为formdata
Oct 31 Javascript
vue 中的 render 函数作用详解
Feb 28 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
May 06 Javascript
animate 实现滑动切换效果【实例代码】
May 05 #Javascript
JavaScript中各种引用类型的常用操作方法小结
May 05 #Javascript
Sea.JS知识总结
May 05 #Javascript
在Node.js中使用Javascript Generators详解
May 05 #Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
May 05 #Javascript
JS中dom0级事件和dom2级事件的区别介绍
May 05 #Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
May 05 #Javascript
You might like
fgetcvs在linux的问题
2012/01/15 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
基于javascript实现放大镜特效
2020/12/03 Javascript
Python高效编程技巧
2013/01/07 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
StringBuilder和String的区别
2015/05/18 面试题
小学教师的自我评价范例
2013/10/31 职场文书
学子宴答谢词
2014/01/25 职场文书
期末评语大全
2014/05/04 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
教书育人演讲稿
2014/09/11 职场文书
介绍信的格式
2015/01/30 职场文书
导游词之井冈山
2019/11/20 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
Python爬虫实战之爬取携程评论
2021/06/02 Python
Python办公自动化解决world文件批量转换
2021/09/15 Python
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers