在图表的不同位置显示多条垂直线

Display multiple vertical lines on graph at various positions

我想在 dygraphs 中 x 轴上的点上绘制垂直线。

他们应该:

从这个意义上说,很像在随机点绘制多条额外的轴线。

但是,如果它们具有与常规系列图相同的特征,那将会很有帮助,因为当它悬停在上面时,标签会沿 x 轴显示它的值。

以防万一,它们将与其他系列线绘制在同一图表上,并且可能具有也可能不具有与这些系列相同的 x 轴值。

如何实现?

一种画垂直线的方法,就是使用underlayCallback。它允许您绘制图形的背景。

这是在 X=100、X=200 和 X=500 处绘制 3 条垂直线的示例:

<script src="https://cdnjs.cloudflare.com/ajax/libs/dygraph/1.1.1/dygraph-combined.js"></script>
<div id="div_g" style="width:400px; height:200px;"></div>
<script>
  // A basic sinusoidal data series.
  var data = [];
  for (var i = 0; i < 1000; i++) {
    var base = 10 * Math.sin(i / 90.0);
    data.push([i, base]);
  }

  new Dygraph(
    document.getElementById("div_g"),
    data, {
      labels: ['X', 'Y'],
      underlayCallback: function(canvas, area, g) {
        canvas.strokeStyle = 'red';
        var lines = [100, 200, 500];
        for (var idx = 0; idx < lines.length; idx++) {
          var canvasx = g.toDomXCoord(lines[idx]);
          var range = g.yAxisRange();
          canvas.beginPath();
          canvas.moveTo(canvasx, g.toDomYCoord(range[0]));
          canvas.lineTo(canvasx, g.toDomYCoord(range[1]));
          canvas.stroke();
          canvas.closePath();
        }
      }
    }
  );
</script>