Javascript d3.js中多行的动态工具提示
我正在构建一个复杂的多行图形,包括缩放、刷牙、复选框等。我能够完成所有的工作,但却被工具提示卡住了。 我想要这样的东西 在特定x坐标处具有所有路径值的线Javascript d3.js中多行的动态工具提示,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我正在构建一个复杂的多行图形,包括缩放、刷牙、复选框等。我能够完成所有的工作,但却被工具提示卡住了。 我想要这样的东西 在特定x坐标处具有所有路径值的线 var vertical = d3.select("#main-graph") .append("div") .attr("class", "remove") .style("position", "absolute") .style("z-index", "19") .style("width", "1px") .style("height
var vertical = d3.select("#main-graph")
.append("div")
.attr("class", "remove")
.style("position", "absolute")
.style("z-index", "19")
.style("width", "1px")
.style("height", "380px")
.style("top", "10px")
.style("bottom", "30px")
.style("left", "0px")
.style("background", "#fff");
d3.select("#main-graph")
.on("mousemove", function(){
mousex = d3.mouse(this);
mousex = mousex[0] + 220 ;
vertical.style("left", mousex + "px" )})
.on("mouseover", function(){
mousex = d3.mouse(this);
mousex = mousex[0] +220 ;
vertical.style("left", mousex + "px")});
});
目前我有上面的代码来获取行。我现在如何获取悬停线上所有行的数据。谢谢你的帮助 使用函数从mousex值获取实际值
var xValue = xScale.invert(mousex);
获得xValue后,使用查找数组中该值的索引
要声明平分线函数,请执行以下操作:
var bisectDate = d3.bisector(function(d) { return d.date; }).left;
下面是如何使用它:
var index = bisectDate(data, xValue, 1);
一旦有了索引,就可以在索引、索引-1和索引+1值之间选择最接近的值,并从数据中获取所有的yValues和xValues
var finalIndex = getDesiredIndex(data, index); //Implement getDesiredIndex to get the left, right or center whatever index you think is perfect for your graph.
我的假设是,您的数据位于对象数组中。所以data[finalIndex].yValue1,data[finalIndex].yValue2
。。。。。应该是你要找的
如果您需要我为您提供更具体的实现或工作示例,请添加一个JSFIDLE,我可以为您编辑它。使用函数从mousex值获取实际值
var xValue = xScale.invert(mousex);
获得xValue后,使用查找数组中该值的索引
要声明平分线函数,请执行以下操作:
var bisectDate = d3.bisector(function(d) { return d.date; }).left;
下面是如何使用它:
var index = bisectDate(data, xValue, 1);
一旦有了索引,就可以在索引、索引-1和索引+1值之间选择最接近的值,并从数据中获取所有的yValues和xValues
var finalIndex = getDesiredIndex(data, index); //Implement getDesiredIndex to get the left, right or center whatever index you think is perfect for your graph.
我的假设是,您的数据位于对象数组中。所以data[finalIndex].yValue1,data[finalIndex].yValue2
。。。。。应该是你要找的
如果您需要我为您提供更具体的实现或工作示例,请添加一个JSFIDLE,我可以为您进行编辑。感谢yogesh的回复。因此,这里是一个基本版本的小提琴。我会尝试实现你的。如果你能让我看到这个例子,这将是有帮助的。我已经在mousemove上打印了控制台的所有内容。我将把它留给您来决定您想要向最终用户显示它的方式。在当前鼠标位置显示一行应该不难,然后在当前鼠标位置也应该能够轻松获得div。太好了:)谢谢yogesh!嗨,Yogesh,鼠标悬停在图形上时,是否可能在所有线节点上都有圆。你能帮我解决这个问题吗?这当然是可能的。一旦知道最接近的xvalue和yvalue。现在你已经知道了x值和y值。通过x值和y值,可以从比例中计算出x点和y点。获得x和y值后,在该点绘制圆。为了方便起见,你可以把它们放在一个单独的g块中。在画新的圆圈之前,一定要删除旧的圆圈。谢谢你的回复。因此,这里是一个基本版本的小提琴。我会尝试实现你的。如果你能让我看到这个例子,这将是有帮助的。我已经在mousemove上打印了控制台的所有内容。我将把它留给您来决定您想要向最终用户显示它的方式。在当前鼠标位置显示一行应该不难,然后在当前鼠标位置也应该能够轻松获得div。太好了:)谢谢yogesh!嗨,Yogesh,鼠标悬停在图形上时,是否可能在所有线节点上都有圆。你能帮我解决这个问题吗?这当然是可能的。一旦知道最接近的xvalue和yvalue。现在你已经知道了x值和y值。通过x值和y值,可以从比例中计算出x点和y点。获得x和y值后,在该点绘制圆。为了方便起见,你可以把它们放在一个单独的g块中。在绘制新圆之前,请始终删除或删除旧圆。