Chart.js (v2.9.4)--如何像高版本一样支持skipNull
项目开发中,用到Chart.js展示图表,用起来也非常方便,配置很灵活,很好用,给个数据集,设置一些配置值,实例化一个Chart出来,图表就非常丝滑地展现出来了。
但是作为开发人员都知道的一个真理,永远不变的就是变化,永远无理的都是客户的需求。
很不幸,我就撞到这么一个的需求:“把那些值为0的数据集,从chart图表中移除,碍眼”。

baidu和bing这一顿疯狂搜索,好嘛,v2版本的Chart.js根本不支持这个功能,升级到高版本,也有点麻烦,因为V3以上的版本,并不是完全向前兼容。
解决问题的方法就是:Chart.js是开源的,可以看源码,通过修改代码,来满足这个需求,以下是修改源码满足需求的详细过程:
用notepad++打开v2.9.4版本的chart.js(公司现在用的就是这个版本), 最好用notepad++的jsTool插件工具格式化一下,代码有点乱。
1,定位到 4970行的computeFitCategoryTraits()函数,添加一个参数 strackCount,然后在4972行,改成var count = strackCount || ruler.stackCount; 如下图示:

2,定位到5141行的getStacks函数,添加一个dataIndex参数,然后插入5153~5158这个几行新代码,

3 定位到5179行的getStackCount函数,新增dataIndex参数,再给getStacks传递这个参数

4 定位到5191行的getStackIndex函数,新增dataIndex参数,也是同样给getStacks传递这个新增的参数

5 定位到5249行的calculateBarIndexPixels函数,
新增5296行的代码,这个skipNull的配置可以自定义到自己喜欢的配置项上,这里我是配置到了dataset集合,后面会说怎么配置。
给computeFitCategoryTraits新增stackCount函数。
给getStackIndex也新增一个参数,根据skipNull配置的值传递具体值。

6,最后再dataset配置里新增skipNull配置项

最终的效果如下:

需求是满足了,不过还有个问题,就是假如项目用的是chart.js的min压缩版,咋整,这个压缩的代码可不好改啊,不要急,chart.js开放出来的可扩展性和可自定义性,丰富到令人发指.
方法如下:

在实例化出Chart(),之前,把上面几个步骤说到那几个要改动的函数,全部复制到这里,重新实现一次,覆盖原来的, 一样可以实现想要的效果。
Chart.js (v2.9.4)--如何像高版本一样支持skipNull的更多相关文章
- 数据可视化(1)--Chart.js
Chart.js是一个HTML5图表库,使用canvas元素来展示各式各样的客户端图表,支持折线图.柱形图.雷达图.饼图.环形图等.在每种图表中,还包含了大量的自定义选项,包括动画展示形式. Char ...
- [转]Chart.js入门教程
Chart.js是一个简单.面向对象.为设计者和开发者准备的图表绘制工具库. 相信大部分人都一样,看到一大筐用文本或者表格形式呈现的数据就头疼.因为这种呈现方式也太无聊了吧...而且这对于我们处理原始 ...
- Chart.js入门教程
Chart.js是一个简单.面向对象.为设计者和开发者准备的图表绘制工具库. 相信大部分人都一样,看到一大筐用文本或者表格形式呈现的数据就头疼.因为这种呈现方式也太无聊了吧...而且这对于我们处理原始 ...
- atitit.atiOrm.js v2 q61 版本新特性.docx
atitit.atiOrm.js v2 q61 版本新特性.docx 1. V1新特性如下1 1.1. V2规划,直接生成sql在js端1 2. Orm设计框架图1 2.1. atiOrm.js的原理 ...
- chart.js使用常见问题
Chart.js是一个简单.面向对象.为设计者和开发者准备的图表绘制工具库. 在使用过程中新手可能会遇到很多问题导致图标无法显示.下面我们来看一下在使用过程中可能会遇到的问题. 刚开始用chart.j ...
- chart.js应用中遇到的问题
问题一:chart.js的版本问题:打开官网https://github.com/chartjs/Chart.js/releases/tag/v2.7.3,点击Tags,选择最新版本,我这里选用的是V ...
- JS组件系列——开源免费图表组件:Chart.js
前言:最近被开源免费得有点上火了,各种组件首先想到的就是是开源否.是否免费.是否和bootstrap风格一致.想着以后做报表肯定要用到图表组件的,于是在Bootstrap中文网上面找到了Chart.j ...
- Ionic中使用Chart.js进行图表展示以及在iOS/Android中的性能差异
Angular Chart 简介 在之前的文章中介绍了使用 Ionic 开发跨平台(iOS & Android)应用中遇到的一些问题的解决方案. 在更新0.1.3版本的过程中遇到了需要使用图表 ...
- Heatmap.js v2.0 – 最强大的 Web 动态热图
Heatmap 是用来呈现一定区域内的统计度量,最常见的网站访问热力图就是以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示.Heatmap.js 这个 JavaScript 库可以实现 ...
- Rails-treasure chest4: 使用图表对资料进行分析chart.js(及其他);管理用户权限的gem 'Pumdit'(6000🌟)
* 多档案上传* 图表资料分析 Chartkick gem或者 chart.js* 用户权限控管 gem Pundit (6000✨) *HTML E-mail 寄送 : gem premaile ...
随机推荐
- Git 教程:解密 .gitignore 文件、合并分支、解决冲突、及 Git 帮助
Git 帮助 如果你忘记了命令或命令的选项,你可以使用 Git 帮助. 在命令行中,有几种不同的使用帮助命令的方式: git command -help - 查看特定命令的所有可用选项 git hel ...
- Python设计模式----3.单例模式
单例模式:主要目的是确保某一个类只有一个实例存在 代码: class A(): def __new__(self, *args, **kwargs): if not hasattr(self, 'na ...
- npm发包教程
1-npm注册账号 访问npm官网注册账号,邮件验证激活账号 npm官网 2-项目npm配置 在项目下打开终端,初始化npm npm init -y 此时项目下会生成package.json 配置文件 ...
- C#开发的PhotoNet看图软件 - 开源研究系列文章 - 个人小作品
这几天忙于编程.上次发布了壁纸管理器的插件版( https://www.cnblogs.com/lzhdim/p/18074135 ),然后整理和添加了一下相关的壁纸图片文件,虽然在管理器中也能浏览壁 ...
- 【Azure Developer】.Net 简单示例 "文字动图显示" Typing to SVG
问题描述 看见一个有趣的页面,可以把输入的文字信息,直接输出SVG图片,还可以实现动图模式. 示例URL: https://readme-typing-svg.demolab.com/?font=F ...
- 分布式文件存储-FastDFS
1.1 FastDFS简介 1.1.1 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了 ...
- 阿里云容器服务差异化 SLO 混部技术实践
简介:阿里巴巴在"差异化 SLO 混合部署"上已经有了多年的实践经验,目前已达到业界领先水平.所谓"差异化 SLO",就是将不同类型的工作负载混合运行在同一节 ...
- Flink 1.14 新特性预览
简介: 一文了解 Flink 1.14 版本新特性及最新进展 本文由社区志愿者陈政羽整理,内容源自阿里巴巴技术专家宋辛童 (五藏) 在 8 月 7 日线上 Flink Meetup 分享的<F ...
- dotnet OpenXML 读取 PPT 主序列进入退出强调动画
本文告诉大家如何读取 PPT 文件里面,放在主动画序列 MainSequence 的进入和退出和强调的动画,和在 OpenXML 里面的存放方式 如以下的课件内容,给一个元素添加了进入强调退出的动画, ...
- containerd基本使用命令
一.containerd简介 官 方 文 档 : https://containerd.io 在 2016 年 12 月 14 日,Docker 公司宣布将containerd 从 Docker 中分 ...