强制ChartJS显示带有空值的圆环图

时间:2014-12-07 17:43:06

标签: javascript chart.js

我有一个网格,每列有4个doughtnut图表,分别为:过去90天过去60天过去7天今天

今天的问题在于它并不总是显示数据,尤其是在早上。有没有办法强制ChartJS显示图表,即使它没有任何数据?

以下是一个示例:http://jsfiddle.net/6xV78/219/

var pieData = [
  {
    value: 0,
    color:"#3F9F3F"
  },
  {
    value : 0,
    color : "#222"
  }
];

2 个答案:

答案 0 :(得分:0)

我找到了一种快速的解决方法,不确定它的“好”或“有效”方式如何,但是它对我有用。如果值为零/零,我将其替换为-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的收入(已赚取和未决)。

*请注意,当其他人不为null时,这仍然会考虑到1,因此您需要自己照顾这一点。我添加了一种方法来验证所有值是否都为空,这是我唯一这样显示的方法。

答案 1 :(得分:-1)

所有值等于零的饼图定义不明确。因为每个切片的角度(和面积)与切片的相应值与所有值的总和的比率成比例。如果所有值都等于零,则它们的总和为零。图书馆应该正确地避免除以零(希望通过设计),从而导致您遇到的无饼图案例。如果这种情况有可能发生,那么程序员有责任在填充图表之前检测全零情况。然后程序员可以显示“还没有数据。你这么早就做了什么?去睡觉吧。”消息,如果所有值都为零。或者,也许,如果他们非常需要保持外观一致(在所有时间都有图表),他们可以显示一个特殊的全黑无数据饼图,其中包含以下虚拟数据:

var pieNoData = [
  {
    value: 1,
    color: "#000000"
  }
];

尽管如此,披露没有数据存在也没有羞耻。