【问题标题】:How to properly resize voronoi in a reponsive chart如何在响应式图表中正确调整 voronoi 的大小
【发布时间】:2016-04-29 17:18:29
【问题描述】:

我有一个用 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; });

在我的 resize 函数中,我尝试重新绘制它:

  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

感谢您的宝贵时间!

【问题讨论】:

    标签: javascript d3.js voronoi


    【解决方案1】:

    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

    【讨论】:

    • 非常感谢!但是,仍然存在一些遗留问题。现在,当您更改窗口大小时,图表线和区域的大小未正确调整。悬停文本也不再出现,我猜在删除并重新添加 voronoi 路径后该功能不再有效。我原以为这个功能会保留下来并且可以重复使用......在 plunker 界面中也不可见,但现在看起来轴在每次调整大小时都会被复制,导致水平刻度看起来更厚/错误。知道如何解决吗?再次感谢您抽出宝贵时间!
    • 实际上Y轴刻度看起来不错,但是我看到x轴没有重新计算刻度频率,导致文本冲突
    • @CapivaraGraphics、mouseovermouseout 函数超出了调整大小函数的范围。我将他们的范围扩大到他们的父母级别,一切都应该没问题。更新代码here。对此感到抱歉。
    • 太棒了,效果很好。我显然对这件事不知所措;)
    猜你喜欢
    • 2012-03-11
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 2012-05-25
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多