首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将鼠标悬停在一个图表上以在D3.js中的所有图表上显示垂直线和工具提示?

如何将鼠标悬停在一个图表上以在D3.js中的所有图表上显示垂直线和工具提示?
EN

Stack Overflow用户
提问于 2021-06-02 16:19:00
回答 1查看 119关注 0票数 0

我正在使用D3.js和ReactJS,我想将鼠标悬停在一个图表上,并在所有其他图表上显示垂直线和工具提示。

我一次只能在一个图表中得到垂直线。预期的结果是在所有图表中显示垂直线和工具提示。

这是我尝试过的:

代码语言:javascript
运行
复制
  React.useEffect(() => {
    d3.select(anchorEl)
      .on("mouseout.tooltip", () => {
        d3.select(ref.current).attr("opacity", 0);
      })
      .on("mouseover.tooltip", () => {
        d3.select(ref.current).attr("opacity", 1);
      })
      .on("mousemove.tooltip", (e) => {
        d3.select(ref.current)
          .selectAll(".tooltipLinePoint")
          .attr("opacity", 1);
        followPoints(e);
      });
  }, [anchorEl, followPoints]);

这是实际的代码结果multiline-chart-tooltip-acoss-all-charts

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-07 03:34:15

解决方案:

为当前悬停的图表绘制直线,然后为其他图表绘制直线,关键是使用d3.select()和d3.selectAll()。

代码语言:javascript
运行
复制
  d3.select(ref.current)
    .select(".tooltipLine")
    .attr("x1", x)
    .attr("x2", x)
    .attr("y1", -margin.top)
    .attr("y2", height);

  d3.selectAll(".tooltip")
    .select(".tooltipLine")
    .attr("x1", x)
    .attr("x2", x)
    .attr("y1", -margin.top)
    .attr("y2", height);

  drawLine(baseXPos);
  drawContent(baseXPos);
  drawBackground();

  drawLineForOthers(baseXPos);
  drawContentForOthers(baseXPos);
  drawBackgroundForOthers();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67801439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档