【问题标题】:dc.js: include all bars when count is zerodc.js:计数为零时包括所有条形图
【发布时间】:2015-10-19 14:02:21
【问题描述】:

我需要在图表中包含所有条形。示例:我有五个条(1,2,3,4,5),得分为reduceCount。当所有条形图都有值时,图表很好。

但是,当条形图没有值时(在本例中为一个):

我尝试添加.y(d3.scale.ordinal().domain([1, 2, 3, 4, 5])),但此方法在行图中不存在。

【问题讨论】:

  • 你有弹性秤吗?请至少分享您的代码,最好是在 jsfiddle 或类似内容上的工作示例。
  • 你好@EthanJewett,是的,我有弹性秤;但我需要在 y 轴。这是我的jsfiddle
  • 嗯。没有把握。我认为如果它不在数据中,图表将不会显示它。但是您可能可以使用图表上的 .data() 方法人为地使用该键添加一个空组?

标签: javascript d3.js dc.js


【解决方案1】:

您可以使用“假组”来确保 bin 存在,即使没有任何值可以填充它们。

From the FAQ:

function ensure_group_bins(source_group) { // (source_group, bins...}
    var bins = Array.prototype.slice.call(arguments, 1);
    return {
        all:function () {
            var result = source_group.all().slice(0), // copy original results (we mustn't modify them)
                found = {};
            result.forEach(function(d) {
                found[d.key] = true;
            });
            bins.forEach(function(d) {
                if(!found[d])
                    result.push({key: d, value: 0});
            });
            return result;
        }
    };
};

像这样使用它:

var mod_group = ensure_group_bins(your_group, 1, 2, 3, 4, 5);
chart.group(mod_group)

我不会在这里使用.data(),因为它可以interfere with capped charts,其中行图就是其中之一。 (尽管期望它起作用是完全合理的。)

【讨论】:

  • 我不确定如何实现此代码。 ensure_group_binds 获取source_group 作为参数,但我必须将值包含在chart.group() 中?
  • 我认为这个答案也是常见问题解答,但我在上面添加了一些使用提示,以防万一。
  • 感谢您的帮助!!
猜你喜欢
  • 2015-05-21
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多