I am using d3 v4. When someone rolls over my line chart, I want the display to show information about the point on the graph where they roll, so I turned on this
svg.append("rect") .attr("class", "overlay") .attr("width", width) .attr("height", height) .on("mouseover", function() { focus.style("display", null); }) .on("mouseout", function() { focus.style("display", "none"); }) .on("mousemove", mousemove); function mousemove() { var x0 = x.invert(d3.mouse(this)[0]), i = bisectDate(data, x0, 1), d0 = data[i - 1], d1 = data[i], d = x0 - d0.date > d1.date - x0 ? d1 : d0; focus.attr("transform", "translate(" + x(d.index_date) + "," + y(d.value) + ")"); focus.select("text").text(d.value).append("tspan") .attr("x", 10).attr("dy", "1.5em").text(formatDate(d.index_date)); var bbox = focus.select("text").node().getBBox(); rect.attr("width", bbox.width + 4).attr("height", bbox.height + 4); }
The problem is that as you are more and more right from my line chart, the information begins to be cut - https://jsfiddle.net/rgw12x8d/2/ . How can I set things up so that even if you go over a point in the far right corner, the info window remains completely visible?
source share