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 相关文章推荐
让innerHTML的脚本也可以运行起来
Jul 01 Javascript
JSON为什么那样红为什么要用json(另有洞天)
Dec 26 Javascript
JS控制静态页面传递参数并获取参数应用
Aug 10 Javascript
javaScript基础详解
Jan 19 Javascript
利用JS实现简单的日期选择插件
Jan 23 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
Aug 04 Javascript
javascript基本常用排序算法解析
Sep 27 Javascript
JS实现的计数排序与基数排序算法示例
Dec 04 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
Jan 22 Javascript
JavaScript基础之this和箭头函数详析
Sep 05 Javascript
element-ui 文件上传修改文件名的方法示例
Nov 05 Javascript
jQuery实现简单评论区功能
Oct 26 jQuery
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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
解析php session_set_save_handler 函数的用法(mysql)
2013/06/29 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
2017/07/19 jQuery
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
JavaScript面向对象精要(上部)
2017/09/12 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
详解Vue串联过滤器的使用场景
2020/04/30 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
Python语法分析之字符串格式化
2019/06/13 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
python访问hdfs的操作
2020/06/06 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
个人生活学习自我评价范文
2013/11/26 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
学生手册评语
2014/05/05 职场文书
租赁协议书
2015/01/27 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
解决 redis 无法远程连接
2022/05/15 Redis