详解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 Keycode对照表
Oct 24 Javascript
重写javascript中window.confirm的行为
Oct 21 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
Oct 29 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
Nov 19 Javascript
js通过location.search来获取页面传来的参数
Sep 11 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
JavaScript检测原始值、引用值、属性
Jun 20 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
Oct 09 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
Jul 07 Javascript
深入理解vue-class-component源码阅读
Feb 18 Javascript
pm2发布node配置文件ecosystem.json详解
May 15 Javascript
微信小程序点餐系统开发常见问题汇总
Aug 06 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数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
详解Django中Request对象的相关用法
2015/07/17 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
python绘制多个子图的实例
2019/07/07 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
python实现打砖块游戏
2020/02/25 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
Whistles官网:英国女装品牌
2020/08/14 全球购物
Weblogc domain问题
2014/01/27 面试题
大学生就业推荐信范文
2013/11/29 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
物业工程部岗位职责
2015/02/11 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
Python实现日志实时监测的示例详解
2022/04/06 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript