D3.jsで折れ線グラフを作成しました(添付の画像を参照してください 1 )。
マウスを置いたときにグラフのドットにツールチップを挿入することができました。ドットの色や大きさも変えたいです。私はいろいろな方法で試しましたが、本当に難しいようです。何か助けは?これがコードの一部です:
svg.selectAll("dot")
.data(data)
.enter().append("circle")
.attr("r", 5.5)
.style("fill", "#fff8ee")
.style("opacity", .8) // set the element opacity
.style("stroke", "#f93") // set the line colour
.style("stroke-width", 3.5)
.attr("cx", function(d) { return x(d.date); })
.attr("cy", function(d) { return y(d.close); })
.on("mouseover", function(d) {
div.transition()
.duration(70)
.style("opacity", .7)
;
div .html(formatTime(d.date) + "<br/>" + d.close)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY - 28) + "px");
})
.on("mouseout", function(d) {
div.transition()
.duration(200)
.style("opacity", 0);
});
ハンドラーで色とサイズを設定するだけです:
.on("mouseover", function(d) {
d3.select(this).attr("r", 10).style("fill", "red");
})
.on("mouseout", function(d) {
d3.select(this).attr("r", 5.5).style("fill", "#fff8ee");
});
理由はわかりませんが、d3.select(this)
は以前は機能していましたが、機能しなくなりました。今はd3.select(event.currentTarget)
を使用しています。
したがって、svg
をグラフと見なし、そのすべての円をデフォルトで赤にすると、mouseover
で円の色を緑に変更し、mouseout
は次のようになります:
svg.on("mouseover", function(d){
d3.select(event.currentTarget)
.style("fill", "green");
})
.on("mouseout", function(d){
d3.select(event.currentTarget)
.style("fill", "red");
});