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 相关文章推荐
JavaScript操纵窗口的方法小结
Jun 28 Javascript
自己封装的javascript事件队列函数版
Jun 12 Javascript
javascript实现类似超链接的效果
Dec 26 Javascript
javascript实现网页端解压并查看zip文件
Dec 15 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
Jan 22 Javascript
jquery结合html实现中英文页面切换
Nov 29 Javascript
jQuery实现CheckBox全选、全不选功能
Jan 11 Javascript
canvas压缩图片转换成base64格式输出文件流
Mar 09 Javascript
vue父组件向子组件动态传值的两种方法
Nov 11 Javascript
Element UI 自定义正则表达式验证方法
Sep 04 Javascript
详解vue-element Tree树形控件填坑路
Mar 26 Javascript
Node.js中package.json中库的版本号(~和^)
Apr 02 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
php socket方式提交的post详解
2008/07/19 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
php文件操作相关类实例
2015/06/18 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
python下os模块强大的重命名方法renames详解
2017/03/07 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
python实现报表自动化详解
2017/11/16 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
python opencv摄像头的简单应用
2019/06/06 Python
简单了解python代码优化小技巧
2019/07/08 Python
Python处理PDF与CDF实例
2020/02/26 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
《理想》教学反思
2014/02/17 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
九九重阳节标语
2014/10/07 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python