为图例添加动态色彩标签
Adding labels to a legend with dynamic colours
我目前正在使用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循环,但这也没有帮助。
有什么建议吗?
这里有一个问题。如果数据绑定正确,D3将进行迭代。这就是你可以做的:
首先,选择所需的div或span:
var clientText = d3.select("#value");
然后,为文本创建一个变量,并按以下顺序绑定来自dataGroup
的数据:
var texts = clientText.selectAll(".clients")
.data(dataGroup)
.enter()
.append("text");
我们称之为"选择数据输入附加"序列。
然后,您可以执行代码的其余部分:
texts.style("color", function(d, i){
return colors(i);
})
.text(function(d){
return d.key;
});
这将按顺序打印所有的名字,而不是最幸福的结果。
这是小提琴:https://jsfiddle.net/uwLcrzxk/
尝试将.data(dataGroup)
移动到.append("text")
之前,然后添加.enter()
,如下所示:
d3.select("#value")
.data(dataGroup)
.enter()
.append("text")
.style("color", function(d, i){
return colours(i);
})
.text(function(d){
return d.key;
});
相关文章:
- 在<页眉>标签
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- iframe正在添加标签,需要删除它们
- 如何自动调整标签的高度以适应内容
- Jquery标签插件粘贴问题
- Twitter引导程序Typeahead-Id&标签
- Highcharts-如何在自定义格式化程序中获得默认的y轴标签格式化程序
- Morris.js折线图x轴标签在调整大小后消失
- JavaScript goto 标签如何使用内部循环
- 显示某个用户ID的某个标签的30张Instagram图片
- 标签客户端的设置值
- 谷歌图表显示所有标签
- 如何在图片和边缘之间居中设置标签
- 在Datatables中设置本地化后,需要更改标签文本
- 第二组标签及其内容赢得'默认情况下t加载
- 在一个javascript文件中为整个网站创建标签
- 兰吉 |如何在 span 标签上使用单击事件删除突出显示的文本
- Knockout.JS标签在foreach内部不起作用
- 如何在离子框架+有角度的框架中制作顶部标签
- 为图例添加动态色彩标签