这是有关Dygraphs库的问题。
当使用“可见性”方法来抑制呈现多个时间序列的某些变量时,只有可见的突出显示的点才传递给“ highlightCallback”函数(第三个参数,在文档中称为“ points”)。如果用户可以访问回调函数中的所有点,即突出显示的可见点和如果将相应的变量设置为可见的话,则突出显示的点将很方便。
我的问题:是否有某种功能/解决方法可以访问(un)highlightCallback函数中不可见的突出显示点的坐标?
为了澄清问题,这里有一个简单的例子:
假设我们具有以下多元时间序列
"time_index", "var1", "var2"\n
"1", "5.1", "0.3"\n
"2", "5.5", "0.2"\n
"3", "5.8", "0.1"
以及使用此数据集的Dygraph对象
g
。我们设置g.updateOptions({visibility: [true, false]});
因此,绘制了与
var1
相对应的时间序列,而var2
被隐藏了。现在假设我们要为时间序列var2
的每个突出显示点绘制一条长度为var1
的垂直线,即突出显示点
(1,5.1)
时从(1,5.4)=(1,5.1+0.3)
到(1,5.1)
的线突出显示点
(2,5.5)
时从(2,5.7)=(2,5.5+0.2)
到(2,5.5)
的线突出显示点
(3,5.8)
时从(3,5.9)=(3,5.8+0.1)
到(3,5.8)
的线这可以通过使用HighlightCallback函数来完成。
g.updateOptions({
highlightCallback: function(event, x, points, row, seriesName) {
draw_line(points[0],[points[0].xval,points[0].yval+points[1].yval]);
//draw_line(point_start,point_end)
}
});
不幸的是,我还没有在HighlightCallback函数中找到一种访问不可见时间序列
var2
(即points[1].yval
,这里用来确定垂直线长度)的数据的方法。谢谢您的帮助!
最佳答案
dygraphs确实公开了一个通用的数据访问API,您可以从HighlightCallback中使用它:
g.numRows()
g.numColumns()
g.getValue(row, column)
http://dygraphs.com/jsdoc/symbols/Dygraph.html#getValue
HighlightCallback的“行”参数对应于g.getValue()的第一个参数。
这是一个显示其工作原理的示例:
http://jsfiddle.net/eM2Mg/7/