繁体   English   中英

D3中具有剪切路径的折线图的工具提示

[英]Tooltip for Line Chart with Clip Path in D3

我整理了一个D3折线图,并使用剪辑路径/剪辑添加了阈值编码。 我面临的唯一问题是我无法在此图表中添加工具提示。 当我将鼠标悬停在图表中的任何位置并且图表上相应的y轴值显示在工具提示中时,我需要工具提示。

在此处输入图片说明

我使用Mike Bostock的示例添加了阈值编码。

 var line = d3.svg.line()
    .interpolate("basis")
    .x(function(d) { return _config.xScale(d.vtc); })
    .y(function(d) { return _config.yScale(d.values); });

          svg.append("clipPath")
      .attr("id", "clip-above")
    .append("rect")
      .attr("width", _config.width)
      .attr("height", _config.yScale(55));

  svg.append("clipPath")
      .attr("id", "clip-below")
    .append("rect")
      .attr("y", _config.yScale(55))
      .attr("width", _config.width)
      .attr("height", _config.height - _config.yScale(55));


  svg.selectAll(".line")
      .data(["above", "below"])
    .enter().append("path")
      .attr("class", function(d) { return "line " + d; })
      .attr("clip-path", function(d) { return "url(#clip-" + d + ")"; })
      .datum(data)
      .attr("d", line);

我不知道如何为该特定图表添加工具提示,因为路径上方有剪辑矩形,并且该路径被细分为上下分段以提供色彩效果。

在此处输入图片说明

我们是否有统一的方法将工具提示添加到正常路径,而这一方法呢? 如果是,我想了解一些我可以查看的资源/链接。

这样的东西,但并不复杂(没有任何指示符,只是工具提示)

我的CODEPEN链接

您可以为该行添加mouseOver处理程序,并使用d3线性比例的.invert函数将鼠标的y位置转换回yAxis值。 现在,您可以动态添加工具提示文本元素并为其设置位置,值

这是更新的Codepen链接

注意:您仍然需要增加该行的捕获区域。 这可以通过向线条添加透明笔触来完成。

  svg.selectAll(".line")
    .data(["above", "below"])
    .enter().append("path")
    .attr("class", function(d) { return "line " + d; })
    .attr("clip-path", function(d) { return "url(#clip-" + d + ")"; })
    .datum(data)
    .attr("d", line)
  .on("mouseover", function() {
    var mousePos = d3.mouse(this);
    var yAxisValue = _config.yScale.invert(mousePos[1]);
    svg.selectAll(".tooltip").data([mousePos])
      .enter().append("text")
      .classed("tooltip", true)
      .attr("x", function(d) { return d[0]})
      .attr("y", function(d) { return d[1]})
      .text(yAxisValue); 
   })
   .on("mouseout", function() {
      svg.selectAll(".tooltip").data([]).exit().remove();
   });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM