如何获得共享相同x值的系列的2点坐标

时间:2015-10-02 06:32:52

标签: javascript dygraphs

简短版本:
对于dygraphs,我需要看到具有相同x的点(一个独特的系列)的坐标。但是dygraphs只显示其中一个。 例如:

P1=[1,2]
P2=[2,10]
P3=[2,12]

我希望能够专注于P2并看到像P2, x=2, y=10这样的东西,并且如果我专注于后者,则可以使用P3。

有没有办法做到这一点?

长版:
在dygraphs库中,我想绘制一个时间系列(TS)与另一个系列 这意味着对于特定时间T1,TS1具有值" A"和TS2的值为" B"。

我需要绘制对应于时间" T1"的点[A,B]。在图表中,x轴表示TS1值,y轴表示TS2值。

我的问题是在不同的时间,我可能有相同的TS1或TS2值。 结果是我的计算图表"有很多分享相同的" x"。 Dygraphs只允许显示其中一个点。 有没有办法关注具有相同x的每个点并查看它们的坐标?

1 个答案:

答案 0 :(得分:0)

你可以写一个custom plotter来描绘散点图。

您可能需要明确设置dateWindowvalueRange,因为您正在更改哪个系列对应于x轴和y轴。

这是我的意思demo

new Dygraph(div,
    "T,X,Y\n" +
    "1,0,3\n" +
    "2,2,6\n" +
    ..., {
      plotter: function (e) {
        // This is the officially endorsed way to plot all the series at once.
        if (e.seriesIndex !== 0) return;
        var sets = e.allSeriesPoints;
        var ctx = e.drawingContext,
            g = e.dygraph;

        ctx.beginPath();
        for (var i = 0; i < sets[0].length; i++) {
          var x = sets[0][i].yval,
              y = sets[1][i].yval,
              coords = g.toDomCoords(x, y),
              screenX = coords[0],
              screenY = coords[1];
          if (i == 0) {
            ctx.moveTo(screenX, screenY);
          } else {
            ctx.lineTo(screenX, screenY);
          }
        }
        ctx.stroke();
      }
    });

正如您在演示中所看到的,这可以正确呈现,但需要更多工作才能使鼠标交互看起来正确。