gpt4 book ai didi

javascript - SVG 路径渲染是否可以在 geometricPrecision 选项之外消除锯齿?

转载 作者:行者123 更新时间:2023-11-28 02:57:29 25 4
gpt4 key购买 nike

我知道 SVG 的 geometricPrecision 样式选项,但是路径仍然表现出大量的锯齿。我使用的数据集相当密集,大约有 400 个点。看看下面的红色路径。

path aliasing present even when geometricPrecision style active

SVG 中的抗锯齿路径还有其他选项吗?

编辑:

该行是从制表符分隔的数据创建的,如下所示(减去不重要的细节):

var x = d3.scaleLinear()
.range([0, width]);

var y = d3.scaleLinear()
.rangeRound([height, 0]);

x.domain([0,240000]);
y.domain([0,30]);


var line = d3.line()
.x(function(d) { return x(d.income); })
.y(function(d) { return y(d.tax); });
...
...
...

g.append("path").classed("linedata", true)
.datum(data)
.attr("fill", "none")
.attr("stroke", "#e04444")
.attr("stroke-linejoin", "round")
.attr("stroke-linecap", "round")
.attr("stroke-width", 2.3)
.attr("d", line);

最佳答案

事实证明,这里的问题不是密集数据的混叠或插值问题。虽然我最终确实将数据密度优化为路径曲率,但问题是我用来将数据值映射到 SVG 像素值的 d3.scale

如果您使用 rangeRound 而不是 range 创建 D3 比例,它会映射到最近的像素,从而强制渲染路径出现锯齿。只需将 rangeRound 切换为 range 即可得到更平滑的路径,而不管用于插值数据的方法如何。

enter image description here

关于javascript - SVG 路径渲染是否可以在 geometricPrecision 选项之外消除锯齿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46373135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com