gpt4 book ai didi

javascript - 如何在响应式图表中正确调整 voronoi 的大小

转载 作者:行者123 更新时间:2023-11-29 16:03:27 25 4
gpt4 key购买 nike

我有一个用 d3 制作的响应式折线图,但在调整用于悬停状态的 voronoi 的大小时遇到​​问题。我怀疑我没有以正确的方式提及它...

我在这里添加了 voronoi:

var voronoiGroup = svg.append("g")

.attr("class", "voronoi");

voronoiGroup.selectAll("line")
.data(voronoi(d3.nest()
.key(function(d) { return xScale(d.date) + "," + yScale(d.value); })
.rollup(function(v) { return v[0]; })
.entries(d3.merge(ranksFiltered.map(function(d) { return d.values;})))
.map(function(d) { return d.values; })))
.enter()

.append("path")
.attr("id", "cells")
.attr("d", function(d) { return "M" + d.join("L") + "Z"; })
.datum(function(d) { return d.point; });

在我的调整大小函数中,我尝试重绘它:

  svg.select("#cells path")
.attr("d", function(d) { return "M" + d.join("L") + "Z"; })
.datum(function(d) { return d.point; });;

如果有人想试一试,这里有个小插曲:

http://plnkr.co/edit/Jj4QpF1bqK901WalNMmR

谢谢你的时间!

最佳答案

Voronoi Geom 正在计算与 clipExtent 相关的像素位置.由于您正在更改宽度(剪辑范围),因此您需要重新运行计算。这是使用 d3 的少数情况之一,我建议您只删除您的 voronoi 组下的路径并重新添加它们:

        voronoi.clipExtent([[0, -10], [width+10, height]]);
voronoiGroup.selectAll("path").remove();

voronoiGroup.selectAll("cells")
.data(voronoi(vd))
.enter()
.append("path")
.attr("class", "cells")
.attr("d", function(d) { return "M" + d.join("L") + "Z"; })
.datum(function(d) { return d.point; })
.attr("stroke", "red")
.on("mouseover", mouseover)
.on("mouseout", mouseout);

已更新 plunker .

关于javascript - 如何在响应式图表中正确调整 voronoi 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36944104/

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