dc.js – 如何从多列创build行图

我需要在csv中用多个列的input在dc.js中创build一个rowchart。 所以我需要映射一列到每一行,每列总数到行值。 可能有一个明显的解决办法,但我似乎无法find任何例子。 非常感谢S

更新:这是一个快速的草图。 道歉的标准
行图
第1列—————– 64(第1列总数)
第2栏——- 35(第2栏共计)
第3列———— 45(第3列总数)

有趣的问题! 这听起来有点类似于在这里请求crossfilter的枢轴。 使用“假组”和“假维”来想到一个解决scheme,但有一些注意事项:

  • 它会反映其他维度的filter
  • 但是,您将无法单击图表中的行来过滤其他任何内容(因为它会select哪些logging?)

假组的构造函数如下所示:

function regroup(dim, cols) { var _groupAll = dim.groupAll().reduce( function(p, v) { // add cols.forEach(function(c) { p[c] += v[c]; }); return p; }, function(p, v) { // remove cols.forEach(function(c) { p[c] -= v[c]; }); return p; }, function() { // init var p = {}; cols.forEach(function(c) { p[c] = 0; }); return p; }); return { all: function() { // or _.pairs, anything to turn the object into an array return d3.map(_groupAll.value()).entries(); } }; } 

它正在做的是将所有请求的行减less到一个对象,然后将该对象转换为数组格式,dc.js期望group.all返回。

您可以将任意维度传递给此构造函数 – 因为您无法在这些行上进行过滤,所以将其索引并不重要,但您可能希望它具有其自己的维度,以便受所有其他维度filter的影响。 同样给这个构造函数一个你想变成组的列的数组,并将结果用作你的“组”。

例如

 var dim = ndx.dimension(function(r) { return ra; }); var sidewaysGroup = regroup(dim, ['a', 'b', 'c', 'd']); 

完整的例子在这里: http : //jsfiddle.net/gordonwoodhull/37uET/6/

(请注意,点击图表中的行会导致不好,因为它应该过滤什么?)

你在寻找堆积的排行榜吗? 例如,此图表中的每一行代表一个类别,每种颜色代表一个子类别:

在这里输入图像描述

不幸的是,这个特性在DC.js中还不被支持。 function请求位于https://github.com/dc-js/dc.js/issues/397 。 如果您愿意参与某些非库代码,则可以查看该问题日志中引用的示例。

或者,您可以使用可堆叠的条形图。 这个链接似乎有一个很好的描述这是如何工作的: http : //www.solinea.com/blog/coloring-dcjs-stacked-bar-charts 在这里输入图像描述