Chartjs с потоковым плагином: обновление y-диапазона - PullRequest
0 голосов
/ 31 октября 2018

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

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

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

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

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

1 Ответ

0 голосов
/ 05 ноября 2018

Вы можете вручную установить 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...