このグループ化された棒グラフD3.js の例を、ユーザーがバーの 1 つにマウスを合わせるたびにツールチップを表示するように調整したいと考えています。
次のように、ユーザーのマウス ポインターを基準にしてツールチップを表示する方法を考え出しました。
var tooltip = d3.select("body").append("div")
.attr("class", "tooltip")
.style("opacity", 1e-6);
state.selectAll("rect")
.data(function(d) { return d.ages; })
...
.on("mouseover", function(d, i) {
tooltip.transition()
.duration(100)
.style("opacity", 1);
tooltip.html("hello world")
.style("left", x + "px")
.style("top", y + "px");
});
// CSS
div.tooltip {
position: absolute;
width: 130px;
height: 60px;
background: #ddd;
}
しかし、バーが部分的に隠れてしまうため、これは理想的ではありません。代わりに私が本当にやりたいのは、選択したバーの上部にツールチップを表示することです.
マウスの絶対 x/y 座標ではなく、現在マウスオーバーされているブロックの絶対 x/y ピクセル座標を取得する方法を知っている人はいますか? 次に、それらの座標を使用してツールチップを配置できます。
これがjsfiddleの始まりです(ただし、アクセス制御のためにデータをロードできません):http://jsfiddle.net/YGjHT/1/