2015-05-07 63 views
1

說我有一個包含一列Name一個csv,這裏的前幾個值:dimple.js聚集非數值

Name 
A 
B 
B 
C 
C 
C 
D 

現在我想創建一個使用dimple.js柱狀圖顯示的分佈Name(即每個不同的Name的計數),但我找不到每個名稱的實際數量在酒窩中做到這一點的方法。我擡起頭的chart.addMeasureAxis文檔( https://github.com/PMSI-AlignAlytics/dimple/wiki/dimple.chart#addMeasureAxis),並發現,該措施的說法:

措施(必需):這應該是從數據的字段名。如果該字段包含數值,則它們將被聚合,如果該字段包含任何非數值,則將使用不同數量的值。

所以基本上是這樣說的,每個類別發生多少次都沒有關係,酒窩就是把他們當中的每一個都當作是一次發生?

我嘗試了以下chart.addMeasureAxis('y', 'Name'),結果是每個條的值爲1(即每個名稱只出現一次)的barplot。

有沒有辦法在不改變數據集的情況下實現這一點?

回答

2

您確實需要其他數據區分行:

例如,

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"); 

但沒有一種方法只用名字來做。

+0

我不明白'Type'解決方案,類型X如何區分名稱A和B? – hshihab

+1

它會爲Name的每個值計算不同的Type值 –

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對象」

var myChart = new dimple.chart(svg, countData); 

那麼對於 'X' 和 'Y' 軸,

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

請期待中d3.nest()瞭解「countData」對象。