详解Chart.js轻量级图表库的使用经验


Posted in Javascript onMay 22, 2018

前言

最近项目中遇到一个在页面中画图表的需求,需要一个扇状图和一个柱状图,虽然能使用svg或canvas绘制,但吃力还不一定讨好,所以研究接入了主流的第三方图表库供项目使用。下面主要记录我使用过程中的一些体验和解决方法,具体教程请移步官方文档。

技术选型

研究了Highcharts、百度的ECharts、阿里的G2和Charts.js四个图表库,由于项目对图表需求不大,图表不复杂,所以引入了轻量级的Charts.js。Chart.js很容易上手,只需要在页面中引用脚本文件,并创建 <canvas> 节点即可渲染出图表。且为你的数据提供 8 种可视化展现方式,每种方式都具有动态效果并且可定制;在所有现代浏览器(IE9+)上都有高效的绘图效率;响应式布局。

GitHub源码: https://github.com/nnnick/Chart.js
Chart.js文档:http://www.bootcss.com/p/chart.js/

引入

GitHUb上下载源码,把里面的dist/Chart.bundle.js文件引入项目即可使用;查看源码,发现其兼容了多种模块加载方式,所以我使用requireJs在页面中加载。

使用经验

①图表颜色值个数可以不与数据个数相等,如

var pieConfig = {
   type: 'pie',
   data: {
     datasets: [{
      data: [10, 20],
      backgroundColor: ['#debd5a', '#ff6d4a', '#3cc9bf', '#7599e9',]
     }]
  }
}

②可以取消响应式options: {responsive: false},方便控制图表的大小,canvas多大图表便多大,canvas不会自动占满外层容器。

③取消legend的点击事件,因为点击legend会默认隐藏该数据的占比,所以我需要去掉点击事件,设置legend: {onClick: function () {}},修改点击事件。

④把legend由默认的矩形修改成正方形,设置legend的字体大小和色值

options: {
  legend: {
   position: 'right',
   labels: {
    boxWidth: 14,// 修改宽度
    fontSize: 14,
    fontColor: '#666666'
   }
}

效果如下

详解Chart.js轻量级图表库的使用经验

⑤柱状图去掉网格线,设置轴线颜色、矩形的宽度和y轴数据从0开始展示。由于使用的Chart.js 2.0,配置参数变化很多,所以网上很多列子已失效,这里给出有效的配置代码

options: {
  scales: {
   xAxes: [{
    gridLines: {
     color: 'rgba(0, 0, 0, 0)',// 隐藏x轴方向轴线
     zeroLineColor: '#666666'// 设置轴颜色
    },
    barPercentage: 0.2,// 设置柱宽度
    ticks: {// 设置轴文字字号和色值
     fontSize: 12,
     fontColor: '#666666'
    }
   }],
   yAxes: [{
    gridLines: {
     color: 'rgba(0, 0, 0, 0)',// 隐藏要y轴轴线
     zeroLineColor: '#666666'
     },
     ticks: {
      fontSize: 12,
      beginAtZero: true,// y轴数据从0开始展示
      fontColor: '#666666'
      }
   }]
  }
}

效果如下

详解Chart.js轻量级图表库的使用经验

⑥给图表tooltips的数据加上单位,可以使用tooltips的callback函数设置

tooltips: {
 callbacks: {
  label: function (tooltipItem, data) {
   var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index] + '%';
   var title = data.labels[tooltipItem.index] + ':';
   return title + value;
   }
  }
}

效果如下

详解Chart.js轻量级图表库的使用经验

tooltips: {
  callbacks: {
   label: function (tooptipItem) {
    return tooptipItem.yLabel + '个' ;
   }
  }
}

效果如下

详解Chart.js轻量级图表库的使用经验

总结

语言功底有限,表达不到位敬请原谅,本文主要作为自己项目总结使用。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
驱动事件的addEvent.js代码
Mar 27 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
Apr 11 Javascript
js实现千分符和保留几位小数的简单实例
Aug 01 Javascript
jQuery实现自动调用和触发某个事件的方法
Nov 18 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
Dec 18 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
Dec 26 Javascript
微信小程序模板之分页滑动栏
Feb 10 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
Nov 06 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
Vue常见面试题整理【值得收藏】
Sep 20 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 17 Javascript
三步搞定:Vue.js调用Android原生操作
Sep 07 Javascript
VUE2.0中Jsonp的使用方法
May 22 #Javascript
mpvue构建小程序的方法(步骤+地址)
May 22 #Javascript
基于mpvue的小程序项目搭建的步骤
May 22 #Javascript
安装vue-cli的简易过程
May 22 #Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 #Javascript
Vue单页及多页应用全局配置404页面实践记录
May 22 #Javascript
Vue页面骨架屏的实现方法
May 22 #Javascript
You might like
PHP4之真OO
2006/10/09 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
网页中的图片的处理方法与代码
2009/11/26 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
python自定义类并使用的方法
2015/05/07 Python
Python实现简单多线程任务队列
2016/02/27 Python
python字符串与url编码的转换实例
2018/05/10 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
python requests post多层字典的方法
2018/12/27 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
python判断正负数方式
2020/06/03 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
Python通过format函数格式化显示值
2020/10/17 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
学校食堂采购员岗位职责
2013/12/05 职场文书
销售辞职报告范文
2014/01/12 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
Python办公自动化之Excel(中)
2021/05/24 Python
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript