Javascript d3.js从对象数组中绘制任意数量的线时的唯一颜色
我用下面的代码绘制任意数量的线,其中Javascript d3.js从对象数组中绘制任意数量的线时的唯一颜色,javascript,d3.js,Javascript,D3.js,我用下面的代码绘制任意数量的线,其中allLines是一个对象数组数组,每个对象数组生成一条线。现在所有的线条都是相同的颜色如何使每一种颜色都独一无二?我正在寻找一种替代方法,不需要将其硬塞进nest() 您可以使用其中一个,例如d3.scale.category20()。您可以像其他D3音阶一样使用它: var colours = d3.scale.category20(); colours(someData); colours(someOtherData); 对于您的行,您有一个数组作为数
allLines
是一个对象数组数组,每个对象数组生成一条线。现在所有的线条都是相同的颜色如何使每一种颜色都独一无二?我正在寻找一种替代方法,不需要将其硬塞进nest()
您可以使用其中一个,例如d3.scale.category20()
。您可以像其他D3音阶一样使用它:
var colours = d3.scale.category20();
colours(someData);
colours(someOtherData);
对于您的行,您有一个数组作为数据,因此无法直接工作。但是,您可以根据线的值计算一些东西并使用它,例如
.attr("stroke", function(d) {
return colors(d3.sum(d, function(e) {
return e.whateverTheNumberThatDeterminesTheLineIs;
}));
})
您可以使用其中一个。@Larskothoff谢谢您的建议,但我该怎么做呢?我习惯于做像colors=d3.scale.category10()这样的事情,但我也习惯于自己编制颜色索引(比如colors[d.color])。我不知道如何翻译,这里d3负责幕后的每一行。我似乎没有一个可用的变量来索引以生成唯一的颜色。您只需像使用任何其他比例一样使用它,即
颜色(data1);颜色(数据2)
。它将为不同的输入产生不同的颜色。@Larskothoff但我如何引用数据1和数据2?现在我只需要传递一个数组数组allLines,您只需要.attr(“stroke”,function(d){returncolors(d);})
。
.attr("stroke", function(d) {
return colors(d3.sum(d, function(e) {
return e.whateverTheNumberThatDeterminesTheLineIs;
}));
})