gpt4 book ai didi

javascript - 悬停时显示绘制线的长度注释

转载 作者:行者123 更新时间:2023-11-29 15:26:26 24 4
gpt4 key购买 nike

使用 dygraphs我将绘制一个看起来像楼梯的系列:连续的水平线和垂直线。 (具有不同的宽度和恒定的高度)。

我想让注释或标签在悬停时显示水平线的长度。如何做到这一点?也许有一种方法:

  • 提供当悬停在线段时调用的回调
  • 使用该回调添加一个临时注释(使用记录的注释功能)

或者也许有更好的方法?

例子:

<head><script  
type="text/javascript"
src="http://dygraphs.com/dygraph-combined.js"></script>
</head>
<body>
<div id="graphdiv"></div>
<script type="text/javascript">
var g = new Dygraph(document.getElementById("graphdiv"),
[
[0, 1], // Starts at height 1, step width is 2
[2, 2], // step width is 1
[3, 3], // step width is 0.5
[3.5, 4], // step width is 0.25
[3.75, 5], // remainder is at height 5
],
{
stepPlot: true
});
</script>
</body>

See here for further examples of step plots在 Dygraphs 网站上

进度:

我关注的是我在 the source code of dygraph.js 中找到的方法: findClosestPoint()。不幸的是,它在可见的 Canvas 上(我认为)对点进行线性(蛮力)搜索,但它会这样做。所以我需要锻炼:

  1. 它叫什么,
  2. 我应该接听哪些来电者
  3. 如何为其附加回调

最佳答案

我认为你可以使用注释来解决这个问题(http://dygraphs.com/annotations.html)

这是一个带有可能解决方案的 jsfiddle:Example fiddle

基本上你添加这样的注释:

g.setAnnotations([
{
series: "seriesX",
x: 0,
shortText: "2"
},
...

这将在第一行的开头设置一个 2..然后你可以有一个 1 作为 seconf 行的长度,在那里有另一个注释等等:

...
{
series: "seriesX",
x: 2,
shortText: "1"
}
...

我知道这不是当您将鼠标悬停在线上时,但我认为这与您使用 dygraphs 时一样接近。另一种选择是监听 mousemove 并使用图形上方的 div 根据鼠标坐标/图形坐标正确定位,但这样需要更多代码。

编辑:好吧,我知道如果有很多点紧密地结合在一起看起来会很糟糕。您可以像这样在悬停时显示和隐藏注释:Updated fiddle

我使用 jQuery 来选择注释,如果许多点具有相同的标题,我也会稍微更改文本以便更容易地选择它。如果您不使用 jQuery,您可以通过其他方式手动进行选择。

      g.updateOptions( {
annotationMouseOverHandler: function(annotation, point, dygraph, event)
{
var anno = $(".dygraphDefaultAnnotation[title='" + annotation.text +"']");
//alert(annotation.text);
anno.removeClass("annotationHidden");
},
annotationMouseOutHandler:function(annotation, point, dygraph, event)
{
var anno = $(".dygraphDefaultAnnotation[title='" + annotation.text +"']");
//alert(annotation.text);
anno.addClass("annotationHidden");
}
});

并且还使用循环创建注释数组,这样代码就不会太多。

关于javascript - 悬停时显示绘制线的长度注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38774363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com