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 для рабочего примера.