详解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 相关文章推荐
利用JQuery为搜索栏增加tag提示
Jun 22 Javascript
JavaScript入门之事件、cookie、定时等
Oct 21 Javascript
jquery实现pager控件示例
Apr 09 Javascript
IE6-8中Date不支持toISOString的修复方法
May 04 Javascript
JavaScript Array对象详解
Mar 01 Javascript
Javascript的表单验证-揭开正则表达式的面纱
Mar 18 Javascript
Vue.js系列之项目搭建(1)
Jan 03 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
Mar 30 Javascript
关于axios如何全局注册浅析
Jan 14 Javascript
vuex actions传递多参数的处理方法
Sep 18 Javascript
基于Node的Axure文件在线预览的实现代码
Aug 28 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
Apr 29 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菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
JavaScript 学习历程和心得分享
2010/12/12 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
Python实现基于权重的随机数2种方法
2015/04/28 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python基本socket通信控制操作示例
2019/01/30 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
python openpyxl使用方法详解
2019/07/18 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
python如何调用字典的key
2020/05/25 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
python中的列表和元组区别分析
2020/12/30 Python
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
酒店销售经理岗位职责
2014/01/31 职场文书
县级文明单位申报材料
2014/05/23 职场文书
创先争优宣传标语
2014/10/08 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书