详解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 相关文章推荐
javascript call和apply方法
Nov 24 Javascript
JQuery 前台切换网站的样式实现
Jun 22 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
Mar 11 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
JS动态修改iframe内嵌网页地址的方法
Apr 01 Javascript
JS获取图片高度宽度的方法分享
Apr 17 Javascript
实现placeholder效果的方案汇总
Jun 11 Javascript
JS实现跟随鼠标的链接文字提示框效果
Aug 06 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
Feb 23 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
Jun 24 Javascript
js实现微信聊天界面
Aug 09 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 debug 安装技巧
2011/04/30 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
JsRender for object语法简介
2014/10/31 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
Python数组定义方法
2016/04/13 Python
Python中查看文件名和文件路径
2017/03/31 Python
Python读取properties配置文件操作示例
2018/03/29 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
英语专业毕业生自我鉴定
2013/11/09 职场文书
消防安全责任书
2014/04/14 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
社区敬老月活动总结
2015/05/07 职场文书
红色影片观后感
2015/06/18 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书