Mouseover Legend POC

I created this to explore a technique for finding small points in a scatterplot by interacting with the legend. Hover over the legend squares to highlight the members of that group. The salient code looks like this:

        var legend = chart.append("g")
        .attr("text-anchor", "end")
        .selectAll("g")
        .data(["green", "pink", "yellow"])
        .enter().append("g")
        .attr("transform", function (d, i) {
          return "translate(-20," + (15 + i * 20) + ")";
        })
        .attr("class", "legend");
  
      legend.append("rect")
        .attr("class", "legendblock")
        .attr("x", width - 19)
        .attr("width", 19)
        .attr("height", 19)
        .style("fill", function (d) {
          if (d === "green") { return "green" }
          if (d === "pink") { return "pink" }
          if (d === "yellow") { return "yellow" }
        });
  
      legend.append("text")
        .attr("x", width - 24)
        .attr("y", 9.5)
        .attr("dy", "0.32em")
        .text(function (d) { return d; });
  
        legend.selectAll(".legendblock")
        .on("mouseenter", function (d) {
          console.log(d)
          d3.selectAll('.dot')
            .filter(function (dot) {
              if (d === "green") { return dot.species == "setosa" }
              if (d === "pink") { return dot.species == "versicolor" }
              if (d === "yellow") { return dot.species == "virginica" }
            })
            .transition()
            .duration(100)
            .style("opacity", 1)
        })
        .on("mouseout", function (d) {
          d3.selectAll('.dot')
            .transition()
            .duration(100)
            .style("opacity", .5)
        })
  
  
        sepalLength,sepalWidth,petalLength,petalWidth,species
        5.1,3.5,1.4,0.2,setosa
        4.9,3,1.4,0.2,setosa
        4.7,3.2,1.3,0.2,setosa
        4.6,3.1,1.5,0.2,setosa
        5,3.6,1.4,0.2,setosa
        5.4,3.9,1.7,0.4,setosa
        4.6,3.4,1.4,0.3,setosa
        5,3.4,1.5,0.2,setosa
        5.3,3.7,1.5,0.2,setosa
        5,3.3,1.4,0.2,setosa
        6.8,2.8,4.8,1.4,versicolor
        6.7,3,5,1.7,versicolor
        6,2.9,4.5,1.5,versicolor
        5.7,2.6,3.5,1,versicolor
        5.5,2.4,3.8,1.1,versicolor
        5.5,2.4,3.7,1,versicolor
        5.8,2.7,3.9,1.2,versicolor
        6,2.7,5.1,1.6,versicolor
        5.4,3,4.5,1.5,versicolor
        6,3.4,4.5,1.6,versicolor
        6.7,3.1,4.7,1.5,versicolor
        6.3,2.3,4.4,1.3,versicolor
        5.6,3,4.1,1.3,versicolor
        5.5,2.5,4,1.3,versicolor
        5.5,2.6,4.4,1.2,versicolor
        6.1,3,4.6,1.4,versicolor
        5.8,2.6,4,1.2,versicolor
        5,2.3,3.3,1,versicolor
        5.6,2.7,4.2,1.3,versicolor
        5.7,3,4.2,1.2,versicolor
        5.7,2.9,4.2,1.3,versicolor
        6.2,2.9,4.3,1.3,versicolor
        5.1,2.5,3,1.1,versicolor
        5.7,2.8,4.1,1.3,versicolor
        6.3,3.3,6,2.5,virginica
        5.8,2.7,5.1,1.9,virginica
        7.1,3,5.9,2.1,virginica
        5.8,2.8,5.1,2.4,virginica
        6.4,3.2,5.3,2.3,virginica
        6.5,3,5.5,1.8,virginica
        7.7,3.8,6.7,2.2,virginica
        7.7,2.6,6.9,2.3,virginica
        6,2.2,5,1.5,virginica
        6.9,3.2,5.7,2.3,virginica
        5.6,2.8,4.9,2,virginica
        7.7,2.8,6.7,2,virginica
        6.3,2.7,4.9,1.8,virginica
        6.7,3.3,5.7,2.1,virginica
        7.2,3.2,6,1.8,virginica
        6.2,2.8,4.8,1.8,virginica
        6.1,3,4.9,1.8,virginica
        6.4,2.8,5.6,2.1,virginica
        7.2,3,5.8,1.6,virginica
        7.4,2.8,6.1,1.9,virginica
        7.9,3.8,6.4,2,virginica
        6.4,2.8,5.6,2.2,virginica
        6.3,2.8,5.1,1.5,virginica
        6.1,2.6,5.6,1.4,virginica
        7.7,3,6.1,2.3,virginica
        6.3,3.4,5.6,2.4,virginica
        6.4,3.1,5.5,1.8,virginica