【发布时间】:2016-05-05 14:26:09
【问题描述】:
我目前正在使用 d3.js 制作多线图。我目前正在寻找一个简单的图例,通过将字体设置为图表中相应颜色的样式来描述每行客户端名称及其线条颜色。
我的测试数据如下所示:
var data = [{
"Client": "ABC",
"sale": "202",
"time": "09:00"
}, {
"Client": "ABC",
"sale": "215",
"time": "11:00"
}, {
"Client": "ABC",
"sale": "179",
"time": "12:00"
}, {
"Client": "ABC",
"sale": "199",
"time": "13:00"
}, {
"Client": "ABC",
"sale": "134",
"time": "15:00"
}, {
"Client": "ABC",
"sale": "176",
"time": "16:00"
}, {
"Client": "ABC",
"sale": "197",
"time": "17:00"
}, {
"Client": "XYZ",
"sale": "100",
"time": "09:00"
...etc
}];
通过使用 d3.nest(),我按其客户端名称对 json 进行了排序,现在生成如下所示的数据:
[{
"key": "ABC",
"values": [{
"Client": "ABC",
"sale": "202",
"year": "2000"
}, {
"Client": "ABC",
"sale": "215",
"year": "2002"
}, {
"Client": "ABC",
"sale": "179",
"year": "2004"
}, {
"Client": "ABC",
"sale": "199",
"year": "2006"
}, {
"Client": "ABC",
"sale": "134",
"year": "2008"
}, {
"Client": "ABC",
"sale": "176",
"year": "2010"
}]
}, {
"key": "XYZ",
"values": [{
"Client": "XYZ",
"sale": "100",
"year": "2000"
}, { ...etc
我在上面生成的新 json 称为“dataGroup”。我正在尝试使用迭代在我的 DOM 上填充一个 div,其中客户端名称采用各自的颜色,我使用 d3.scale.category10();
这是我当前的 div 代码:
dataGroup.forEach(function(d, i){
d3.select("#value")
.append("text")
.data(dataGroup)
.style("color", function(d, i){
return colours(i);
})
.text(function(d){
return d.key;
});
});
到目前为止,所有这一切都是返回第一个客户端 (ABC),然后停止。据我了解,我认为 d3 会遍历 dataGroup 中的所有键,但事实并非如此。我尝试在文本函数中放置一个 for 循环,但这也无济于事。
有什么建议吗?
【问题讨论】:
标签: javascript jquery css json d3.js