Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为D3中的动态数据生成工具提示_Javascript_Jquery_D3.js_Data Visualization - Fatal编程技术网

Javascript 为D3中的动态数据生成工具提示

Javascript 为D3中的动态数据生成工具提示,javascript,jquery,d3.js,data-visualization,Javascript,Jquery,D3.js,Data Visualization,我有一个散点图,类似于: 我想为每个组合提供鼠标悬停的工具提示。我当前拥有的工具提示代码如下所示: var tooltip = d3.select("body").append("div") // tooltip code .attr("class", "tooltip") .style("opacity", 0); var circles = svg.selectAll(".dot") .data(data) .enter().append("circle

我有一个散点图,类似于:

我想为每个组合提供鼠标悬停的工具提示。我当前拥有的工具提示代码如下所示:

var tooltip = d3.select("body").append("div")  // tooltip code
   .attr("class", "tooltip")
   .style("opacity", 0);

 var circles = svg.selectAll(".dot")
      .data(data)
    .enter().append("circle")
      .attr("class", "dot")
      .attr("r", 3.5)
      .attr("cx", function(d) { return x(d.petalWidth); })
      .attr("cy", function(d) { return y(d.petalLength); })
      .style("fill", function(d) { return color(d.species); })
      .on("mouseover", function(d) {
         tooltip.transition()
            .duration(200)
            .style("opacity", 1.0);
         tooltip.html(d.petalLength+", "+d.petalWidth)
            .style("left", (d3.event.pageX + 5) + "px")
            .style("top", (d3.event.pageY - 18) + "px");
      })
      .on("mouseout", function(d) {
         tooltip.transition()
            .duration(500)
            .style("opacity", 0);
      });
这将无法为除petalWidth和d.petalLength以外的组合返回正确的工具提示

有没有办法知道选择了哪个组合以及组合的相关数值?

要做到这一点:

首先将刀具提示信息存储在新变量(displayX/displayY)中,如下所示:

.attr("cx", function(d) {
          d.displayX = d.petalWidth;//so displayX holds the x info
          return x(d.petalWidth);

        })
        .attr("cy", function(d) {
          d.displayY = d.petalLength;//so displayY holds the y info
          return y(d.petalLength);
        })
设置组合时,相应地重置变量

 svg.selectAll(".dot").transition().attr("cy", function(d) {
          d.displayY = d[yAxy];//reset the variable displayY
          return y(d[yAxy]);
        });
同样适用于

svg.selectAll(".dot").transition().attr("cx", function(d) {
  d.displayX = d[xAxy];//reset the variable displayX
  return x(d[xAxy]);
});
现在在工具提示中,鼠标悬停使用变量(displayX/displayY)

工作代码


希望这有帮助

你能告诉我如何增加鼠标上方圆圈的大小吗?而且,半径应该回到鼠标的原始大小?我尝试在mouseover函数中插入.attr(“r”,6.5),在mouseout中插入.attr(“r”,4.5)。这不起作用。您可以在鼠标悬停时这样做
d3。选择(This).transition().duration(200).attr(“r”,10)
以增加此处的半径工作代码
 .on("mouseover", function(d) {
          tooltip.transition()
            .duration(200)
            .style("opacity", 1.0);
          tooltip.html(d.displayY + ", " + d.displayX)//use displayX and displayY
            .style("left", (d3.event.pageX + 5) + "px")
            .style("top", (d3.event.pageY - 18) + "px");
        })
        .on("mouseout", function(d) {
          tooltip.transition()
            .duration(500)
            .style("opacity", 0);
        });