关于 .label 函数的 dc.js 文档是否不正确?

Is the dc.js documentation on .label function incorrect?

当我使用此 dc.js 文档中显示的代码时

https://github.com/dc-js/dc.js/blob/master/web/docs/api-1.7.0.md#labellabelfunction

我得到了不同的答案。文档有错吗? 例如,当我使用技巧将数据结构转储到控制台时:

.label(function(d){
            console.log(JSON.stringify(d));
            return d.key;
)};

我得到:

{"key":"M16SDH","value":690}
{"key":"M16SP","value":886}
{"key":"M16SPS","value":704}

没有 "d.data" 对象,因此尝试计算百分比 这种方式行不通:

  // Simple pie chart to filter on type.
  var byTypeChart = dc.pieChart("#byTypeDiv");
  var byTypeDim   = ndx.dimension(function (d) { return (d.celltype == null?'na':d.celltype); });
  var byTypeGroup = byTypeDim.group();
  byTypeChart
     .width(200).height(200)
     .dimension(byTypeDim)
     .group(byTypeGroup)
     .label(function(d){
        return d.data.key + "(" + Math.floor(d.data.value / all.value() * 100) + "%)"; 
      })
     ;

文档说:

// label function has access to the standard d3 data binding and can get quite complicated

但我看到了:

TypeError: d.data is undefined

是。

函数与文档和许多其他标签函数不一致。

问题在这里:https://github.com/dc-js/dc.js/issues/703

点击有关该问题的链接以查找其他参数中的类似差异。

这里的解决方法显然只是直接引用.key.value

dc.js 已经有机地成长,而不是按照一致的计划或愿景建造。本来只是个demo,人气越来越高,已经有dozens and dozens of contributors了。

我不是原作者,只是维护者。我一直更专注于推出 2.0,而不是清理界面。 2.0,仍处于测试阶段,将保持稳定的界面,并在 2.0.1 及以后保持不变。 2.1 和 2.2 将破坏界面,这有助于使其保持一致或更强大。

始终欢迎拉取请求,尤其是对于新的或更新的测试!