首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dygraphs添加垂直线

Dygraphs添加垂直线
EN

Stack Overflow用户
提问于 2013-06-11 01:38:04
回答 2查看 4.2K关注 0票数 3

我正在使用dygraph来绘制一段时间内的温度读数。我希望在y轴上添加2条线来表示高/低阈值。

这目前是通过使用2个额外的常量数据系列来实现的,但我怀疑还有更好的方法。

underlayCallback似乎是更好的选择,但我不清楚如何使用canvas.fillRectg.toComCoords属性来绘制线条。

目前正在处理下面的示例(http://dygraphs.com/tests/highlighted-region.html),它呈现了一条垂直线。任何帮助都是非常感谢的。

代码语言:javascript
复制
var g = new Dygraph(
          document.getElementById("div_g"),
          data,
          {
            labels: ['X', 'Est.', 'Actual'],
            animatedZooms: true,
            underlayCallback: function(canvas, area, g) {
              var bottom_left = g.toDomCoords(300, -20);
              var top_right = g.toDomCoords(301, +20);

          var left = bottom_left[1];
          var right = top_right[0];

          canvas.fillStyle = "rgba(255, 0, 0, 1)";
          canvas.fillRect(right, area.y, 1, area.h);
        }

      }
  );

对于任何感兴趣的人,请使用以下方法来实现预期的结果:

代码语言:javascript
复制
underlayCallback: function(canvas, area, g) {
          var LowCoords = g.toDomCoords(0, 2.25);   
          var HighCoords = g.toDomCoords(0, 4);

          var high = HighCoords[1];
          var low = LowCoords[1];

          canvas.fillStyle = 'red';
          canvas.fillRect(area.x, low, area.w, 2);
          canvas.fillStyle = 'blue';
          canvas.fillRect(area.x, high, area.w, 2);
          }
EN

回答 2

Stack Overflow用户

发布于 2013-08-19 18:40:32

下面是一个概念验证插件,它可以做到这一点:

https://github.com/danvk/dygraphs/pull/215

即使插件不是主要源代码库的一部分,您也可以使用它,但我建议重命名该插件,因为它使用的是Dygraph名称空间。

票数 1
EN

Stack Overflow用户

发布于 2017-06-05 09:48:31

Alt。解决方案:我想要虚线;这个也是:

代码语言:javascript
复制
underlayCallback: function(ctx, area, g) {

    var LowCoords = g.toDomCoords(0, 2.25);   
    var HighCoords = g.toDomCoords(0, 4);

    var high = HighCoords[1];
    var low = LowCoords[1];
    ctx.beginPath();

    ctx.setLineDash([5,15]);
    ctx.moveTo(0, low);
    ctx.lineTo(10000, low);
    ctx.strokeStyle = 'red';
    ctx.stroke();
    ctx.moveTo(0, high);
    ctx.lineTo(10000, high);
    ctx.strokeStyle = 'red';
    ctx.stroke();
    ctx.setLineDash([]);

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17029692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档