我正在使用d3 v4。我想创建一个折线图,其中图表下方的区域是由从顶部暗处到底部浅处的渐变填充的区域。我认为这是配置这种渐变的方式

  svg.append("linearGradient")
        .attr("id", "area-gradient")
        .attr("gradientUnits", "userSpaceOnUse")
        .attr("x1", 0).attr("y1", y(0))
        .attr("x2", 0).attr("y2", y(1000))
    .selectAll("stop")
        .data([
            {offset: "0%", color: "navy"},
            {offset: "30%", color: "navy"},
            {offset: "45%", color: "navy"},
            {offset: "55%", color: "navy"},
            {offset: "60%", color: "navy"},
            {offset: "100%", color: "navy"}
        ])
    .enter().append("stop")
        .attr("offset", function(d) { return d.offset; })
        .attr("stop-color", function(d) { return d.color; });


并使用这种风格

.area {
    fill: url(#area-gradient);
    stroke-width: 0px;
}


但是正如您从我的小提琴-https://jsfiddle.net/yw46ycse/3/中看到的那样,我所拥有的只是一个坚实的区域。为了使图表下方的区域成为渐变,我还需要做什么?

最佳答案

这是您要寻找的解决方案的版本。您可以使用透明色作为终止色{offset: "95%", color: "transparent"}

这是我用来根据需要制作的小提琴的修改版本。

https://codepen.io/Nasir_T/pen/OjOWxz

希望这可以帮助。

09-25 20:05