我正在尝试为我的图表制作如下工具提示:http: //jsfiddle.net/6cJ5c/10/,这就是我的实时图表上的结果:http: //jsfiddle.net/QBDGB/52/ 我想知道为什么会有是圆圈和图形之间的间隙,为什么一开始有一条垂直的圆圈线?当它开始时,圆圈靠近曲线,但突然它们开始上下跳跃!我希望圆圈平滑移动并粘在曲线的表面上。我认为问题在于它们没有与“path1”一起移动,因此它无法识别圆圈,这就是它们分开移动的原因,或者工具提示的值可能与曲线的值不同,因此它们不会重叠! . 这就是数据的生成方式(值和时间)和工具提示:
var data1 = initialise();
var data1s = data1;
function initialise() {
var arr = [];
for (var i = 0; i < n; i++) {
var obj = {
time: Date.now(),
value: Math.floor(Math.random() * 90)
};
arr.push(obj);
}
return arr;
}
// push a new element on to the given array
function updateData(a) {
var obj = {
time: Date.now(),
value: Math.floor(Math.random() * 90)
};
a.push(obj);
}
var formatTime = d3.time.format("%H:%M:%S");
//tooltip
var div = d3.select("body").append("div")
.attr("class", "tooltip")
.style("opacity", 0);
var blueCircles = svg.selectAll("dot")
.data(data1s)
.enter().append("circle")
.attr("r", 3)
.attr("cx", function(d) { return x(d.time); })
.attr("cy", function(d) { return y(d.value); })
.style("fill", "white")
.style("stroke", "red")
.style("stroke-width", "2px")
.on("mousemove", function(d ,i) {
div.transition()
.duration(650)
.style("opacity", .9);
div.html(formatTime(new Date(d.time)) + "<br/>" + d.value)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY - 28) + "px");
})
.on("mouseout", function(d ,i ) {
div.transition()
.duration(650)
.style("opacity", 0);
});
blueCircles.data(data1s)
.transition()
.duration(650)
.attr("cx", function(d) { return x(d.time); })
.attr("cy", function(d) { return y(d.value); });
请告诉我您的意见,因为我真的需要它:(正如我所说,也许我应该在“路径”中添加“鼠标悬停和鼠标移动功能”以使其识别工具提示。如下所示。但我也不太确定: (
var path1 = svg.append("g")
.attr("clip-path", "url(#clip)")
.append("path")
.data([data1])
.attr("class", "line1")
.on("mouseover", mouseover)
.on("mousemove", mousemove)
.on("mouseout", mouseout);