【问题标题】:Dygraphs library: Access to non-visible data in highlightCallback function possible?Dygraphs 库:可以访问 highlightCallback 函数中的不可见数据吗?
【发布时间】:2023-03-20 16:01:01
【问题描述】:

这是关于 Dygraphs 库的问题。

当使用“可见性”方法来抑制对多变量时间序列的某些变量的渲染时,只有 可见 突出显示的点被传递给“highlightCallback”函数(第三个参数,名为文档中的“点”)。如果用户可以访问回调函数中的所有点,即突出显示的可见如果相应的变量要突出显示,那将会很方便设置为可见

我的问题:是否有功能/解决方法可以访问 (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 被隐藏。现在假设我们要为时间序列var1的每个高亮点画一条长度为var2的垂直线,即,

  • 当点(1,5.1) 突出显示时,从(1,5.1)(1,5.4)=(1,5.1+0.3) 的一行
  • 当点(2,5.5) 突出显示时,从(2,5.5)(2,5.7)=(2,5.5+0.2) 的一行
  • 当点(3,5.8) 突出显示时,从(3,5.8)(3,5.9)=(3,5.8+0.1) 的一行

这将通过使用 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,这里用来确定垂直线的长度)的数据的方法。

感谢您的帮助!

【问题讨论】:

  • 你希望g.updateOptions(visibility: [true, false]) 做什么?

标签: javascript dygraphs


【解决方案1】:

dygraphs 确实公开了一个通用数据访问 API,您可以从 highlightCallback 中使用它:

g.numRows()
g.numColumns()
g.getValue(row, column)

http://dygraphs.com/jsdoc/symbols/Dygraph.html#getValue

highlightCallback 的“row”参数对应于 g.getValue() 的第一个参数。

下面是一个例子,展示了它是如何工作的: http://jsfiddle.net/eM2Mg/7/

【讨论】:

  • 感谢您的帮助和提供的示例! getValue 完成了这项工作。 :) 顺便说一句:Dygraphs 真的是一个很棒的图书馆!
  • 我对您的示例做了一些小改动。传递给highlightCallback 的行索引始终为0,表示图表的最左侧点。在缩放或平移之后,必须考虑这种转变。我使用row+=g.getLeftBoundary_(); 来抵消行索引。这是更新示例的链接:link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 2019-01-26
相关资源
最近更新 更多