我想显示一个d3饼图,即使没有数据,该饼图也将可见(类似于此问题:Is it possible to start a D3JS pie chart with all values being 0?)-例如,一个饼图显示了用户个人资料中已回答问题与已回答问题的总数-当用户刚注册时,您仍然希望看到饼图(可能以单色显示为灰色)。

我要实现的解决方案是在创建饼图的过程中检查是否有2行(正确计数为1行,错误计数为1行)的数据是否仅由零组成,如果是,我只需更改一个将这些数字中的1改为1,以便绘制图表,然后稍后进行干预,以确保没有文字表示“ 1正确”之类的内容。

所以我的问题是,只有在两行均为0的情况下,是否有人可以看到在饼图创建期间更改以下代码以将其中一个饼图值从0更改为1的合理方法...

var pie = d3.layout.pie().sort(null).value(function(d) { return d.someCount; });


我已经尝试了多种解决方案来遍历数据(例如使用.each()函数)以获取d.someCount的所有值的总和,但是到目前为止它们并没有达到预期的效果,所以我怀疑我无法正确显示问题。

- 编辑 -

根据要求的示例-尝试将两个值(JavaScript的第一行)都更改为零,图表消失(基于我链接到的其他SO帖子的反馈,这是可以理解的)...

http://codepen.io/d3wannabe/pen/oZbWEv

最佳答案

您可以添加一个其他占位符类别"empty",其数量是根据其他两个类别动态设置的。您可以给它自己的颜色以区别于其他两个。这样可以实现您的目标吗?

var pieChartData = [ { "type": "asked", "theCount": "0" }
                   , { "type": "answered", "theCount": "0" }
                   , { "type": "empty", "theCount": "0"}];

if(pieChartData[0].theCount === "0" &&
  pieChartData[1].theCount === "0"){
  pieChartData[2].theCount = "1"
} else {
  pieChartData[2].theCount = "0"
}

关于javascript - 用“零”数据破解d3饼图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42539014/

10-13 02:15