我正在使用Flot图表,我正在设置各种互动元素。 其中一个元素是用户输入任何x值的元素(根据情况,它实际上可以是x或y值,但为了简单起见,我们假设它始终是x轴值)并且我需要在我绘制的线上输出相应的y坐标。我觉得这应该很简单,所以如果答案显而易见,我会道歉。请注意,输入值可能不会是"点"在flot用于创建行的数组中(虽然它可以)。
您还可以想象在某个点处x = [用户输入,不一定是整数]的垂直线与另一个线系列相交。我需要找到交叉点。我尝试上传照片,但我没有足够的声望点。
答案 0 :(得分:3)
你的代数怎么样?
这实际上是一个例子,埋在了flot的例子中here。如果你查看该页面的来源,你会看到这一点(我已经添加了解释说明):
// Find the nearest points, x-wise
// loop the series data until you find the point
// immediately after your x value of interest (pos.x in this code)
for (j = 0; j < series.data.length; ++j) {
if (series.data[j][0] > pos.x) {
break;
}
}
// Now Interpolate
// Here's the algebra fun!
var y,
p1 = series.data[j - 1], // point before your x
p2 = series.data[j]; // point after your x
if (p1 == null) {
y = p2[1]; // if no point before just get y-value
} else if (p2 == null) {
y = p1[1]; // if no point after just get y-value
} else {
y = p1[1] + (p2[1] - p1[1]) * (pos.x - p1[0]) / (p2[0] - p1[0]);
// here's the algebra bit, see below
}
在最后的其他方面,使用的等式是this interpolation between two points。 Ain的数学很棒?