Javascript 插值线下的d3填充

Javascript 插值线下的d3填充,javascript,css,d3.js,Javascript,Css,D3.js,在下面的d3折线图中,我想用与线条颜色相同的填充颜色和50%的透明度填充线条下的区域 除了向CSS添加区域之外 .area { fill: blue; opacity: 0.5 } 将以下内容添加到函数更新图形(数据) 及 要使填充区域适合插值线下,并使填充颜色与线颜色相等,需要什么?实际上,您必须在选择线之前创建一个新的选择(名为states),此处名为stateArea: var stateArea = svg.selectAll(".area") .data(result

在下面的d3折线图中,我想用与线条颜色相同的填充颜色和50%的透明度填充线条下的区域

除了向CSS添加区域之外

.area {
  fill: blue;
  opacity: 0.5
}
将以下内容添加到
函数更新图形(数据)


要使填充区域适合插值线下,并使填充颜色与线颜色相等,需要什么?

实际上,您必须在选择线之前创建一个新的选择(名为
states
),此处名为
stateArea

var stateArea = svg.selectAll(".area")
    .data(result, function(d) {
        return d.key
    });

stateArea.enter().append("path")
    .attr("class", "area");

stateArea.transition()
    .style("fill", function(d, i) {
        return d.color = color(d.key);
    })
    .style("opacity", 0.5)
    .attr("id", function(d) {
        return 'tagArea' + d.key.replace(/\s+/g, '');
    })
    .attr("d", function(d) {
        return area(d.values)
    });

stateArea.exit().remove();
以下是更新的bl.ocks:


PS:我只是在这里添加区域,如果你想让左边的图例也改变区域,你必须重构代码。

实际上,你必须在行选择之前创建一个新的选择(名为
states
),这里名为
stateArea

var stateArea = svg.selectAll(".area")
    .data(result, function(d) {
        return d.key
    });

stateArea.enter().append("path")
    .attr("class", "area");

stateArea.transition()
    .style("fill", function(d, i) {
        return d.color = color(d.key);
    })
    .style("opacity", 0.5)
    .attr("id", function(d) {
        return 'tagArea' + d.key.replace(/\s+/g, '');
    })
    .attr("d", function(d) {
        return area(d.values)
    });

stateArea.exit().remove();
以下是更新的bl.ocks:

PS:我只是在这里添加了一些区域,如果你想让左边的图例也改变这些区域,你必须重构代码

var stateArea = svg.selectAll(".area")
    .data(result, function(d) {
        return d.key
    });

stateArea.enter().append("path")
    .attr("class", "area");

stateArea.transition()
    .style("fill", function(d, i) {
        return d.color = color(d.key);
    })
    .style("opacity", 0.5)
    .attr("id", function(d) {
        return 'tagArea' + d.key.replace(/\s+/g, '');
    })
    .attr("d", function(d) {
        return area(d.values)
    });

stateArea.exit().remove();