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 相关文章推荐
jquery select选中的一个小问题
Oct 11 Javascript
页面刷新时记住滚动条的位置jquery代码
Jun 17 Javascript
JavaScript实现三阶幻方算法谜题解答
Dec 29 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
Feb 23 Javascript
关于RequireJS的简单介绍即使用方法
Oct 20 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
Jan 08 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
Feb 13 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
Nov 03 Javascript
原生JS实现轮播图效果
Oct 12 Javascript
vue quill editor 使用富文本添加上传音频功能
Jan 14 Javascript
微信小程序仿抖音短视频切换效果的实例代码
Jun 24 Javascript
通过实例解析vuejs如何实现调试代码
Jul 16 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
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
php网页病毒清除类
2014/12/08 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
Yii2中datetime类的使用
2016/12/17 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
JS实现简单省市二级联动
2019/11/27 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
Python标准库之itertools库的使用方法
2017/09/07 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
医院实习介绍信
2014/01/12 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
化工见习报告范文
2014/10/31 职场文书
作息时间调整通知
2015/04/22 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python