Chartjs с плагином потоковой передачи: обновить диапазон y

Я использую инструмент Chartjs с плагин потоковой передачи.

Мой поток содержит данные о времени для x и значения с плавающей запятой для y.

Данные y сильно меняются со временем, иногда ~ 10 ^ -3, иногда 10 ^ -9.

Моя проблема в том, что ChartJS отображает график в отношении всех данных в наборе данных, но я хочу, чтобы минимальное значение оси Y было минимальным (видимые данные), а не минимальным (все данные) (и то же самое для y -ось макс).

Я знаю, что могу уменьшить значение TTL для плагина потоковой передачи, но я хочу сохранить все данные (я также использую плагин масштабирования для ChartJS).

1
0
830
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете вручную установить ticks.min и ticks.max, используя видимые данные, только следующим образом:

onRefresh(chart) {
    var yMin = 0;
    var yMax = 1;
    var xMax = Date.now() - chart.options.plugins.streaming.delay;
    var xMin = xMax - chart.options.plugins.streaming.duration;

    // Your data refresh code
    ...

    // Calculate yMin and yMax based on visible data only
    chart.data.datasets.forEach(function(dataset) {
        dataset.data.forEach(function(point) {
            if (point.x >= xMin && point.x <= xMax) {
                yMin = Math.min(point.y, yMin);
                yMax = Math.max(point.y, yMax);
            }
        });
    });
    chart.config.options.scales.yAxes[0].ticks.min =
        Chart.helpers.niceNum(yMin);
    chart.config.options.scales.yAxes[0].ticks.max =
        Chart.helpers.niceNum(yMax);
}

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