javascript - 鼠标悬停在 d3.js 中无法通过将其附加到圆圈来工作

标签 javascript d3.js scatter-plot

我正在尝试创建一个散点图以及带有画笔功能的缩放功能。但不知怎的,我无法显示工具提示,甚至 .on("mouseover") 也不起作用。无法追踪确切的问题。您可以在 JSFiddle 中看到代码

    let svg = d3.select("#scattergraph").append("svg")
      .attr("width", width + margin.left + margin.right)
      .attr("height", height + margin.top + margin.bottom)
      .append("g")
      .attr("transform", "translate(" + margin.left + "," + margin.top + ")");


    let scatter = svg.append("g")
      .attr("id", "scatterplot")
      .attr("clip-path", "url(#clip)");

    scatter.selectAll(".dot")
      .data(data)
      .enter()
      .append("circle")
      .attr("class", "dot")
      .attr("r", function (d) {
        const radius = (d.size / maxSize) * 10;
        if (radius < 4) {
          return radius + 3
        }
        return radius + 2;
      })
      .attr("cx", function (d) { return x(d.x); })
      .attr("cy", function (d) { return y(d.y); })
      .attr("opacity", 0.5)
      .attr("stroke-width", 1)
      .attr("stroke", "black")
      .style("fill", 'aqua')
        .on("mouseover", function(){
          console.log('doing mouseovr')
        })

最佳答案

问题是下面的群组覆盖了您的圈子。

    scatter.append("g")
      .attr("class", "brush")
      .call(brush);

它会消耗掉您在圆圈中注册的所有鼠标事件。

因此,工具提示不适用于圆圈。

解决上述问题的方法之一是在组上添加圆圈,如下所示:

    scatter.append("g")
      .attr("class", "brush")
      .call(brush);

    scatter.selectAll(".dot")
      .data(data)
      .enter()
      .append("circle")
      .attr("class", "dot")
      .attr("r", 4)
      .attr("cx", function (d) { return x(d.x); })
      .attr("cy", function (d) { return y(d.y); })
      .attr("opacity", 1)
      .attr("stroke-width", 1)
      .attr("stroke", "black")
      .style("fill", 'aqua')
        .on("mouseover", function(){
          console.log('doing mouseovr')
        })
      .on("mousemove", mouseover)
      .on("mouseout", mouseleave);

工作代码here

关于javascript - 鼠标悬停在 d3.js 中无法通过将其附加到圆圈来工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59098903/

相关文章:

javascript - 将一个对象的多个实例添加到另一个对象的数组中;

javascript - d3.js 和地理投影 albers/centers

javascript - Angular Controller - 他们为什么将其命名为 Controller ?

javascript - 如何从 D3.js 图表读取(获取)Y 轴刻度值?

javascript - 向分组条形图添加更多分组

python - 如何围绕散点图上的一个点绘制圆环图?

javascript - 在多个数组中查找交集

javascript - 如何向 d3.js 节点添加文本?

python - 同一轴上的多个散点图

r - 如何在R中绘制半填充点(最好使用ggplot)