dimple.js聚合非数值

时间:2015-05-07 00:11:10

标签: data-visualization dimple.js

假设我的csv只包含一列Name,这里是前几个值:

Name
A
B
B
C
C
C
D

现在我希望使用dimple.js创建一个条形图,显示Name的分布(即每个不同的Name的数量),但我找不到在没有每个名字的实际计数的情况下在凹坑中这样做的方法。我查看了chart.addMeasureAxis的文档( https://github.com/PMSI-AlignAlytics/dimple/wiki/dimple.chart#addMeasureAxis)并发现对于度量参数:

measure(必需):这应该是数据的字段名称。如果该字段包含数值,则它们将被聚合,如果它包含任何非数字值,则将使用不同的值计数。

所以基本上所说的并不是每个类别发生了多少次,酒窝只是将它们看作是一次发生?

我尝试了以下chart.addMeasureAxis('y', 'Name'),结果是一个条形图,每个条形图的值为1(即每个名称只出现一次)。

有没有办法在不更改数据集的情况下实现这一目标?

2 个答案:

答案 0 :(得分:2)

您的数据中确实需要一些区分行的其他内容:

e.g。

Type    Name
X       A
Y       A
Z       A
X       B
Y       B
A       C

你可以用:

chart.addCategoryAxis("x", "Name");
chart.addMeasureAxis("y", "Type");

或添加计数:

Name    Count
A       1
A       1
A       1
B       1
B       1
C       1

然后就是

chart.addCategoryAxis("x", "Name");
chart.addMeasureAxis("y", "Count");

但是没有办法只用这个名字来做。

答案 1 :(得分:0)

希望这会有所帮助..首先使用d3.nest()来获取数据集的唯一值。然后将每个不同值的计数添加到新创建的对象中。

var countData = d3.nest()
    .key(function (d) {
        return d["name];
    })
    .entries(yourDate);

countData.forEach(function (c) {
    c.count = c.values.length;
});

之后,从新的“countData Object”

创建了凹坑图
var myChart = new dimple.chart(svg, countData); 

然后对于'x'和'y'轴,

myChart.addCategoryAxis("x", "key");
myChart.addMeasureAxis("y", "count");

请查看d3.nest()以了解“countData”对象。