这是有关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/

09-20 08:06