【发布时间】:2018-07-20 18:14:09
【问题描述】:
我只想显示每个组的最新值。
以下 CSV 示例:肉桂葡萄干品种的百吉饼总量是在三个不同的采样期收集的:2017 年 5 月、2017 年 3 月和 2016 年 11 月,它们的数量分别为:300、100 和 20。
我已经获取了年份和月份,将它们组合起来,并将它们转换为数字格式,这样我就可以执行 d3.max 来定位最近(最高)的值。最高的是 42856(2017 年 5 月),但我想显示金额(300)而不是 d3.max 金额。
breakfastItem,gluten,breakfastItemType,month,year,dateCode,value
Bagel,Yes,Cinnamon Raisin,May,2017,42856,300
Bagel,Yes,Cinnamon Raisin,March,2017,42795,100
Bagel,Yes,Cinnamon Raisin,November,2016,42675,20
Bagel,Yes,Blueberry,February,2017,42767,50
Bagel,Yes,Blueberry,November,2016,42675,30
Bagel,Yes,Blueberry,March,2016,42430,100
Bagel,Yes,Plain,February,2018,43132,200
Bagel,Yes,Plain,December,2017,43070,202
Bagel,Yes,Plain,February,2016,42401,201
这是我的 Javascript:
d3.csv("Breakfast.csv",function(data) {
data.forEach(function(d){
d.value = +d.value;
d.year = +d.year;
d.dateCode = +d.dateCode;
});
var breakfastCombinations = d3.nest()
.key(function(d) {return d.breakfastItem; })
.key(function(d) {return d.breakfastItemType; })
.rollup(function(oldestDate) {
return d3.max(oldestDate, function(d) {
return d.dateCode; });
})
.entries(data);
document.getElementById("breakfastjson").innerHTML = JSON.stringify(breakfastCombinations,false,2);
});
将我的 JSON 弹出为
{
"key": "Bagel",
"values": [
{
"key": "Cinnamon Raisin",
"value": 42856
},
{
"key": "Blueberry",
"value": 42767
},
{
"key": "Plain",
"value": 43132
}
]
}
但我希望“价值”是该类型百吉饼的总量,而不是 dateCode。像这样:
{
"key": "Bagel",
"values": [
{
"key": "Cinnamon Raisin",
"value": 300
},
{
"key": "Blueberry",
"value": 50
},
{
"key": "Plain",
"value": 200
}
]
}
我想使用此 dateCode 来识别要显示的许多不同信息(如月、年等)的信息。我试过这样的组合:
.rollup(function(oldestDate) {
return d3.max(oldestDate, function(d) {
return d.dateCode; }).value;
})
和
.rollup(function(oldestDate) {
return d3.max(oldestDate, function(d) {
return d.dateCode.value; });
})
但我似乎找不到正确的语法来显示它。救命!
【问题讨论】:
标签: javascript html json d3.js