详解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 相关文章推荐
THREE.JS入门教程(2)着色器-上
Jan 24 Javascript
jQuery 获取兄弟元素的几种不错方法
May 23 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
Mar 02 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
Sep 15 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
Oct 02 Javascript
一分钟理解js闭包
May 04 Javascript
JSP基于Bootstrap分页显示实例解析
Jun 12 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
Sep 24 Javascript
微信小程序微信支付接入开发实例详解
Apr 12 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
Oct 09 jQuery
深入了解javascript 数组的sort方法
Jun 01 Javascript
AngularJS实现多级下拉框
Mar 25 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
PHP数据库开发知多少
2006/10/09 PHP
mayfish 数据入库验证代码
2010/04/30 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
超清晰的document对象详解
2007/02/27 Javascript
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
javascript 隔行换色函数代码
2010/10/24 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
js实现表格数据搜索
2020/08/09 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
django 自定义用户user模型的三种方法
2014/11/18 Python
将Python代码打包为jar软件的简单方法
2015/08/04 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
keras 读取多标签图像数据方式
2020/06/12 Python
Python打印不合法的文件名
2020/07/31 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
促销活动总结模板
2014/07/01 职场文书
文体活动总结
2015/02/04 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书