详解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 相关文章推荐
js监听表单value的修改同步问题,跨浏览器支持
Dec 31 Javascript
js模拟类继承小例子
Jul 17 Javascript
jquery中选择块并改变属性值的方法
Jul 31 Javascript
Javascript 实现复制(Copy)动作方法大全
Jun 20 Javascript
JavaScript中的Math.LOG2E属性使用详解
Jun 14 Javascript
javascript创建cookie、读取cookie
Mar 31 Javascript
基于JS代码实现实时显示系统时间
Jun 16 Javascript
一个简单的JavaScript Map实例(分享)
Aug 03 Javascript
jQuery过滤选择器用法示例
Sep 12 Javascript
Vue动态组件实例解析
Aug 20 Javascript
JS脚本加载后执行相应回调函数的操作方法
Feb 28 Javascript
详解微信小程序开发之formId使用(模板消息)
Aug 27 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 上传文件大小限制
2009/07/05 PHP
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
简单谈谈Python流程控制语句
2016/12/04 Python
Django对models里的objects的使用详解
2019/08/17 Python
下载官网python并安装的步骤详解
2019/10/12 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
python模块内置属性概念及实例
2021/02/18 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
RetroStage德国:复古服装
2019/02/03 全球购物
计算机专业个人简短的自我评价
2013/10/23 职场文书
初中语文教学反思
2014/02/02 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
学术研讨会主持词
2015/07/04 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python