Javascript 如何在D3中保留线条颜色

Javascript 如何在D3中保留线条颜色,javascript,d3.js,graph,data-visualization,graph-visualization,Javascript,D3.js,Graph,Data Visualization,Graph Visualization,我已经在D3中创建了一个多折线图。每行根据颜色数组获取特定颜色,如下所示: var colors = ["#357ca5", "#001F3F", "#00c0ef", "#39cccc", "#00a65a", "#605ca8", "#f39c12", "#f56954", "#D81B60", "#d2d6de"]; for (var lineIndex = 0; lineIndex < filteredLines.length; lineIndex++) {

我已经在D3中创建了一个多折线图。每行根据颜色数组获取特定颜色,如下所示:

var colors = ["#357ca5", "#001F3F", "#00c0ef", "#39cccc", "#00a65a", "#605ca8", "#f39c12", "#f56954", "#D81B60", "#d2d6de"];

for (var lineIndex = 0; lineIndex < filteredLines.length; lineIndex++) {
            svg.append("path")
                .datum(<any>filteredLines[lineIndex].data)
                // routine line stuff..
                .style("stroke", colors[lineIndex])
var colors=[“#357ca5”、“#001F3F”、“#00c0ef”、“#39cccc”、“#00a65a”、“#605ca8”、“#f39c12”、“#f56954”、“#D81B60”、“#D6DE”];
对于(var lineIndex=0;lineIndex
在图表下方,我有每一行的图例,单击该图例会禁用该行并显示剩余的行。我使用上面的
filteredLines
集合实现这一点,在该集合中,我根据图例单击将
isVisible
属性设置为true或false

问题是,一旦一条线被禁用,上面的for循环将穿过其余的线并正确地渲染它们;但是线颜色是根据
颜色[lineIndex]
设置的,因此每次都会得到不同的值


我想要的是,无论是可见的还是隐藏的,所有线条每次都获得相同的颜色。我如何实现这一点?我是否应该实现从线条到颜色的某种映射?非常感谢您的帮助。谢谢。

我建议您将颜色添加到实际线条数据中,而不是通过数组获取。然后参考类似于filteredLi的颜色nes[lineIndex]。颜色


您可能希望在第一时间将颜色信息附加到每一行。

我建议您将颜色添加到实际行数据中,而不是通过数组获取。然后参考类似颜色的filteredLines[lineIndex]。color


您可能希望在第一时间将颜色信息附加到每一行。

我通常保留一个对象,该对象将映射所需值的颜色和数据的键。在我的情况下,这是可行的,因为我们的数据主要是静态的。我不知道这种方法是否对您有帮助

var colorMapping = {
    a: '#FFFFFF',
    b: '#D2D2D2
}
....
.style("stroke", colorMapping[a])

我通常会保留一个对象,该对象将映射我所需值的颜色和数据的键。在我的情况下,这是可行的,因为我们的数据主要是静态的。我不知道这种方法是否对您有帮助

var colorMapping = {
    a: '#FFFFFF',
    b: '#D2D2D2
}
....
.style("stroke", colorMapping[a])

我想这也适用于我的情况,谢谢。我想这也适用于我的情况,谢谢。