dygraph: показать максимум и минимум

Мой вопрос похож на горизонтальную линию, чтобы показать среднее значение на графике, но не то же самое. Я понимаю, используя underlayCallback но как мне получить базовые данные для расчета максимума и минимума данных. Я должен был выделить эти моменты в данных, которые читаются из CSV-файла следующим образом: gplot.updateOptions({'file': filename}); и я заранее не знаю имени файла, поэтому приходится рассчитывать макс, мин на лету. Я чувствую, что это как-то связано с gplot.rawData_ но не могу понять, как.

Благодарю.

1 ответ

Решение

Вы можете запросить набор данных Dygraph, чтобы получить минимальное и максимальное значения, используя его getValue метод, вот так:

// Calculate the min/max y value in the Dygraph's data set.
function calcMinMax(g) {
  var ymin = g.getValue(0, 1), ymax = g.getValue(0, 1), v;
  for (var i = 0; i < g.numRows(); i++) {
    for (var j = 1; j < g.numColumns(); j++) {
      y = g.getValue(i, j);
      if (y < ymin) {
        ymin = y;
      } else if (y > ymax) {
        ymax = y;
      }
    }
  }
  return [ymin, ymax];
}

Чтобы нарисовать линии, вам нужно использовать underlayCallbackнапример,

underlayCallback: function(ctx, area) {
  var mm = calcMinMax(this),
      ymin = mm[0],
      ymax = mm[1],
      canvasYmin = this.toDomYCoord(ymin),
      canvasYmax = this.toDomYCoord(ymax);
  ctx.strokeStyle= 'red';
  ctx.beginPath();
  ctx.moveTo(area.x, canvasYmin);
  ctx.lineTo(area.x + area.w, canvasYmin);
  ctx.moveTo(area.x, canvasYmax);
  ctx.lineTo(area.x + area.w, canvasYmax);
  ctx.closePath();
  ctx.stroke();       
}

Смотрите этот jsbin для рабочего примера.

Другие вопросы по тегам