Javascript 两个带有同步十字线的“动态图”
我使用自定义选项verticalCrosshair实现了两个动态图:此处为true: 当我将鼠标悬停在某个特定x点的任何图形上时,我希望所有图形都显示该点的垂直十字线。 到目前为止,我已经能够在顶部图形gs[0]上实现如下操作:Javascript 两个带有同步十字线的“动态图”,javascript,dygraphs,Javascript,Dygraphs,我使用自定义选项verticalCrosshair实现了两个动态图:此处为true: 当我将鼠标悬停在某个特定x点的任何图形上时,我希望所有图形都显示该点的垂直十字线。 到目前为止,我已经能够在顶部图形gs[0]上实现如下操作: highlightCallback: function(e, x, pts, row) { var sel = gs[0].getSelection(); gs[1].setSelection(sel); }, 当我将鼠标悬停在底部图表上时,不会发生任何事情。
highlightCallback: function(e, x, pts, row) {
var sel = gs[0].getSelection();
gs[1].setSelection(sel);
},
当我将鼠标悬停在底部图表上时,不会发生任何事情。如何使用for loop over all graphs对其进行泛化?您应该将动态图对象放入一个数组中,并在highlightCallback中对其进行循环,更新所有动态图(生成事件的动态图除外)中的选择 一个复杂的问题是highlightCallback没有获取动态图对象作为参数。这是API中的一个疏忽,我希望在dygraphs 2.0中修复它。设置highlightCallback时,可以通过在闭包中捕获相关的动态图对象来解决此问题
请参阅获取一些灵感。您应该将动态图对象放入数组中,并在highlightCallback中循环,更新所有动态图中的选择,而不是生成事件的动态图 一个复杂的问题是highlightCallback没有获取动态图对象作为参数。这是API中的一个疏忽,我希望在dygraphs 2.0中修复它。设置highlightCallback时,可以通过在闭包中捕获相关的动态图对象来解决此问题 请参阅以获取一些灵感。我通过以下方法解决了此问题:
highlightCallback: function(e, x, pts, row) {
for (var j = 0; j < gs.length; j++) {
gs[j].setSelection(row);
}
},
请参见以下图表和来源:
我用以下方法解决了这个问题:
highlightCallback: function(e, x, pts, row) {
for (var j = 0; j < gs.length; j++) {
gs[j].setSelection(row);
}
},
请参见以下图表和来源:
我已经有了这两个功能,并且工作了将近一年。我没有编写代码,只是做了一些编辑,以使labelFollow按我喜欢的方式工作。我跟随最初的作者,将代码塞进了库中,而不仅仅是动态图选项参数中的回调,但我没有将垂直十字线片段放入插件中,因为我还不知道如何编写它们。然而,labelFollow的东西在插件legend.js中,因为这是原作者所做的 至于verticalCrosshair选项的代码,我是从显然值得尊敬的DJCOMXA--。只要搜索verticalCrosshair,您就会发现在脚本中添加了两个小片段 要完成verticalCrosshair选项,当然还需要添加到dygraph-options-reference.js,如下所示:
// Credit due to DJCOMXA.
"verticalCrosshair": {
"default": "false",
"labels": ["Interactive Elements"],
"type": "boolean",
"description": "Shows vertical line on highlighted point."
},
现在,关于labelFollow的另一个问题,为了证明先前在labelFollow上的工作,只需转到。然后你可以点击页面最底部的链接,看到一个显示垂直十字线和labelFollow的图表。我相信,labelFollow是我或多或少复制的wootwoot的作品。类似地,用customLabel_Crosshair替换该图URL中的同步图表,您将看到一个更漂亮的示例,我认为我提供的链接数量有限,因此URL重建说明也有限
我现在不知道我是如何得到原始labelFollow代码的。不管怎样,我找到了一些对legend.js的修改,当然还有wootwoot对dygraph-options-reference.js的修改,并对它们进行了编辑
我必须说,我在danvdk在dygraph.js顶部提供的gmail地址写信给他,建议这些更改的实用性,但由于我不是俱乐部的成员,所以被拒绝了
关于从danvk提供的动态图同步示例同步演示链接中获取灵感,请谨慎地从中获取灵感。现在它让我觉得很舒服
试一下:在页面加载时,转到四个图中的任何一个,在中间的一个瘦区段,从左到右进行缩放点击拖动;然后双击
发生了什么事?您放大了,轨迹垂直填充了图形,但需要一点填充——自动缩放。然后,双击放大后,一切看起来都和以前一样。啊。。。但事实并非如此。现在转到这四个图中的任何一个,重复第一步。。。在同一个瘦点放大,每个图形的数据恰好相同。请注意,缺少自动垂直缩放。在你重新加载页面之前,这是一个永久性的条件。我已经安装了这两个功能,并且工作了将近一年。我没有编写代码,只是做了一些编辑,以使labelFollow按我喜欢的方式工作。我跟随最初的作者,将代码塞进了库中,而不仅仅是动态图选项参数中的回调,但我没有将垂直十字线片段放入插件中,因为我还不知道如何编写它们。然而,labelFollow的东西在插件legend.js中,因为这是原作者所做的 至于verticalCrosshair选项的代码,我是从显然值得尊敬的DJCOMXA--。只要搜索垂直十字线,你就会找到t 该脚本中添加了两个小片段 要完成verticalCrosshair选项,当然还需要添加到dygraph-options-reference.js,如下所示:
// Credit due to DJCOMXA.
"verticalCrosshair": {
"default": "false",
"labels": ["Interactive Elements"],
"type": "boolean",
"description": "Shows vertical line on highlighted point."
},
现在,关于labelFollow的另一个问题,为了证明先前在labelFollow上的工作,只需转到。然后你可以点击页面最底部的链接,看到一个显示垂直十字线和labelFollow的图表。我相信,labelFollow是我或多或少复制的wootwoot的作品。类似地,用customLabel_Crosshair替换该图URL中的同步图表,您将看到一个更漂亮的示例,我认为我提供的链接数量有限,因此URL重建说明也有限
我现在不知道我是如何得到原始labelFollow代码的。不管怎样,我找到了一些对legend.js的修改,当然还有wootwoot对dygraph-options-reference.js的修改,并对它们进行了编辑
我必须说,我在danvdk在dygraph.js顶部提供的gmail地址写信给他,建议这些更改的实用性,但由于我不是俱乐部的成员,所以被拒绝了
关于从danvk提供的动态图同步示例同步演示链接中获取灵感,请谨慎地从中获取灵感。现在它让我觉得很舒服
试一下:在页面加载时,转到四个图中的任何一个,在中间的一个瘦区段,从左到右进行缩放点击拖动;然后双击
发生了什么事?您放大了,轨迹垂直填充了图形,但需要一点填充——自动缩放。然后,双击放大后,一切看起来都和以前一样。啊。。。但事实并非如此。现在转到这四个图中的任何一个,重复第一步。。。在同一个瘦点放大,每个图形的数据恰好相同。请注意,缺少自动垂直缩放。在重新加载页面之前,这是一个永久条件。谢谢,我注意到默认签名中的行参数,请参见下面的答案。谢谢,我注意到默认签名中的行参数,请参见下面的答案。酷!谢谢您的演示。@danvk,请注意,今天我还实现了legendFollow选项,它使图例像这样浮动和翻转:。您是否有兴趣将请求拉入danvk/DYGRAPES/master?我可以根据你的反馈进行调整。很酷的演示,@danvk,我也投票支持在主库中包含verticalCrosshair和legendFollow选项。我很乐意看到一个拉动请求。有关指南,请参见dygraphs.com/changes.html。我建议在extras目录中实现这个插件。酷!谢谢您的演示。@danvk,请注意,今天我还实现了legendFollow选项,它使图例像这样浮动和翻转:。您是否有兴趣将请求拉入danvk/DYGRAPES/master?我可以根据你的反馈进行调整。很酷的演示,@danvk,我也投票支持在主库中包含verticalCrosshair和legendFollow选项。我很乐意看到一个拉动请求。有关指南,请参见dygraphs.com/changes.html。我建议在extras目录中将其作为插件实现。@danvk,我已经在你的synchronize.html页面上解决了这个问题。请参阅@danvk,我已通过synchronize.html页面修复了此问题。看见