0
我不確定這是否可行,但我嘗試創建一個d3.nest對象,其中的鍵是元素名稱而不是元素的名稱值。這是用於堆積區域圖表。D3 - 試圖根據元素名稱而不是值嵌套
這裏是樣本的原始數據:
{
"_id" : {
"month" : 2,
"day" : 26,
"year" : 2014
},
"total" : 34492,
"failed" : 1,
"skipped" : 0
}
我想創建基於總窩對象,失敗,跳過元素名稱,而不是它們的值(即:不是數字)。
得到的巢對象會是這樣的:
[
{
key: "total",
values: [
{
"date": "2014-02-26T05:00:00.000Z",
"count": 34492
},
{
"date": "2014-02-27T05:00:00.000Z",
"count": 34495
}
]
},
{
key: "failed",
values: [
{
"date": "2014-02-26T05:00:00.000Z",
"count": 1
},
{
"date": "2014-02-27T05:00:00.000Z",
"count": 0
}
]
}
]
我沒有對原始數據的佈局一些控制,所以我曾嘗試加入總,失敗,跳過狀態對象下的元素,但也沒有工作。
下面是一些代碼,我有工作:
data.result.forEach(function(d) {
d.date = new Date(d._id.year, d._id.month-1, d._id.day);
d.status = {
"total": d.total,
"failed": d.failed,
"skipped": d.skipped
};
});
var nested = d3.nest()
.key(function(d) { return d.status; })
//.key(function(d) { return d.total; })
//.key(function(d) { return d.failed; })
//.key(function(d) { return d.skipped; })
.entries(data.result);
謝謝你的幫助。
謝謝你 - 偉大工程。 – JamesE
您可以使用它來生成多個嵌套的結構是這樣的: VAR層= [ { 「名」:「總」, 「值」:[{ 「日期」:太陽2014年3月2日00:00 :00 GMT-0500(東部標準時間),「count」:91}, {「date」:2014年3月3日星期一00:00:00 GMT-0500(東部標準時間),「count」:290} ] } ]; 我在玩它,但我從來沒有用過地圖。 – JamesE
'map'只是創建一個新的數組,其中每個元素是在原始數組的相應元素上運行函數的結果。如果你想讓每個元素成爲一個對象,而不僅僅是子數組,那麼只要確保從外部映射函數返回的是:'function(type){var o = {}; o.name = type; o.values =/*內部映射函數* /;返回o; }' – AmeliaBR