Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript d3.js从对象数组中绘制任意数量的线时的唯一颜色_Javascript_D3.js - Fatal编程技术网

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;
  }));
})