У меня есть диаграмма, данные которой загружаются из базы данных SQL, диаграмма МОЖЕТ содержать повторяющиеся значения для одного и того же значения x.
то есть значение X (время) в момент времени 55 секунд может иметь значение температуры: 50, 51, 49, 52, хранящееся в разных строках.
Я реализовал планки погрешностей, чтобы представить эти несоответствия пользователю, поскольку несколько значений y на точку x невозможны для одной и той же серии.
Результатом данных csv до построения графика являются [49, 50, 52]... это было протестировано и отлично работает, однако, как только я заработал, теперь все мои графики по оси y начинаются со значения 0 (вместо 49 в этом кейс).
Есть ли способ автоматизировать минимальное значение y, чтобы оно было просто сгенерированным минимальным значением y, то есть 49? как это делается без погрешностей? или это должно быть жестко запрограммировано?
В настоящее время я реализую функцию обратного вызова точки отрисовки, я мог бы включить способ извлечения минимального значения y, чтобы установить там свои ограничения, если еще нет реализованного способа.
//EDIT Добавлен код и картинки....
function createDyGraph(newChart) {
"use strict";
var min = 100000000; //value way over possible range of data
newChart.dyGraph = new Dygraph(
document.getElementById(newChart.chartGraphID),
newChart.csvData,
{
drawPointCallback: function (g, seriesName, canvasContext, cx, cy,
seriesColor, pointSize, row) {
var col = g.indexFromSetName(seriesName),
val = parseInt(g.getValue(row, col).toString().replace(/,/g, ""), 10),
color = '';
if (newChart.erroneousData[row]) {
color = 'red';
} else {
color = newChart.colors[col - 1];
}
if (val < min) {
min = val;
}
if (color === 'red') {
canvasContext.beginPath();
canvasContext.strokeStyle = 'red';
canvasContext.arc(cx, cy, pointSize, 0, 2 * Math.PI, false);
canvasContext.stroke();
} else {
canvasContext.beginPath();
canvasContext.strokeStyle = seriesColor;
canvasContext.arc(cx, cy, pointSize, 0, 2 * Math.PI, false);
canvasContext.stroke();
}
},
customBars: true,
colors: newChart.colors,
animatedZooms: true,
connectSeparatedPoints: true,
showLabelsOnHighlight: true,
ylabel: 'Count / Value',
xlabel: 'Time (Seconds)',
drawPoints: true,
pointSize: 1,
labels: newChart.labels,
labelsDiv: document.getElementById('legend' + chartIndex),
legend: 'always'
}
);
alert(min);
}
// РЕДАКТИРОВАТЬ: добавлены данные JSON
[["2014-02-06T16:30:00.000Z",[null,2739,null],[null,1786,null],[null,3680.1204,null],[null,2390.9182,null]],
["2014-02-06T16:30:01.000Z",[null,2739,null],[null,1786,null],[null,3680.1204,null],[null,2390.9182,null]],
["2014-02-06T16:30:02.000Z",[null,2739,null],[null,1786,null],[null,3680.1204,null],[null,2390.9182,null]],
["2014-02-06T16:30:03.000Z",[null,2739,null],[null,1786,null],[null,3680.1204,null],[null,2390.9182,null]],
["2014-02-06T16:30:04.000Z",[null,2739,null],[null,1786,null],[null,3680.1204,null],[null,2390.9182,null]],
["2014-02-06T16:30:05.000Z",[null,2739,null],[null,1786,null],[null,3680.1204,null],[null,2390.9182,null]],
["2014-02-06T16:30:06.000Z",[null,2739,null],[null,1786,null],[null,3680.1204,null],[null,2390.9182,null]],
...
["2014-02-06T16:30:59.000Z",[null,2740,null],[null,1787,null],[null,3681.464,null],[null,2392.2569,null]]]