强制 ChartJS 显示具有空值的甜甜圈图
Force ChartJS to show Doughnut chart with null values
我有一个网格,每列上有 4 个 doughtnut 图表,用于不同的时间段:过去 90 天、过去 60 天、过去 7天和今天。
今天的问题是它并不总是显示数据,尤其是在早上。有没有办法强制 ChartJS 显示图表,即使它没有任何数据?
下面是一个示例:http://jsfiddle.net/6xV78/219/
var pieData = [
{
value: 0,
color:"#3F9F3F"
},
{
value : 0,
color : "#222"
}
];
我找到了一个快速的解决方法,不确定它有多"好"或"有效"的方式,但它对我有用。如果值为 null/零,我将它们替换为 -1 以保留图表的外观,然后使用自定义工具提示函数覆盖输出。
{
...
data: [earned == 0 ? -1 : earned, pending == 0 ? -1 : pending]
...
},
options: {
tooltip: {
callbacks: {
label: function (tooltipItem, data) {
const value = data['datasets'][0]['data'][tooltipItem['index']];
return '$' + (value == -1 ? 0 : value);
}
}
}
}
显然,我有 2 个切片,当两者都为 0 时,图表将显示 2 个相等的一半,都显示 0 美元的收入(赚取和待定)。
*请注意,当其他不为空时,这仍然会考虑 1,因此您需要在最后处理它。我添加了一个方法来验证所有值是否为 null,这是我这样显示它的唯一情况。
所有值都等于零的饼图定义不明确。因为每个切片的角度(和面积)与切片各自值与所有值之和的比率成正比。如果所有值都等于零,则它们的总和为零。库应该理所当然地避免除以零(希望是设计使然),从而导致您遇到的无饼图情况。程序员应该负责在填充图表之前检测全零情况,如果这种情况有可能发生。然后程序员可以显示"还没有数据。你这么早起床干什么?去睡觉吧"消息,如果所有值都为零。或者,也许,如果他们非常需要保持外观一致(一直有一个图表),他们可以显示一个特殊的全黑无数据饼图,其中包含以下虚拟数据:
var pieNoData = [
{
value: 1,
color: "#000000"
}
];
不过,披露尚不存在任何数据并不丢人。
相关文章:
- 映射数组ES6时考虑空值
- 在Javascript甜甜圈图的PHP变量中引用PHP变量
- Model中的Typeahead返回空值以形成输入字段
- 装订莫里斯甜甜圈图
- JavaScript-HTML表单到JSON(空值)和格式
- webkit输入类型=在错误日期发送空值的日期
- 为什么数据列表选项的id返回空值
- 如何使用敲除映射将空值映射到空的可观察数组
- 完整日历:在启动时传递空值
- 为什么此函数会过滤掉“空”值
- 通过 Yii2 表单插入数据时获取空值
- 从角度服务返回空值的变量
- Math.min.apply 返回 0 表示空值
- Angular材质md日期选择器中的空值
- 提示时检测空值
- Highcharts甜甜圈工具提示格式使用钻取数据
- D3将两张甜甜圈图叠加在一起
- Sails.js beforeValidate()清空值参数
- 强制 ChartJS 显示具有空值的甜甜圈图
- D3甜甜圈图不需要的轮廓在插值期间