2013-12-06 1 views
0

У меня есть диаграмма Highstock, содержащая две панели (так что 2 серии). Первая серия показывает некоторые данные о высоте в миллиметрах в разное время и вторая серия показывает те же даты, но сложение высоты, взятую из серии 1. Здесь приведена упрощенный пример моих данных:Highstock, как компенсировать все данные Y из серии нажатием кнопки выбора диапазона выбора

Серия 1: [[ 1373313300000,0, 0,4], [+1373313900000,0, 0,6], [+1373314500000,0, 1], [+1373315100000,0, 0,2], [1373315700000,0, 0,6], [+1373316300000,0, 0.8]]

Серия 2: [[1373313300000,0, 0,4 ], [1373313900000.0, 1.0], [1373314500000.0, 2.0], [1373315100000.0, 2.2], [1373315700000.0, 2.8], [1373316300000.0, 3.6]]

Что я хочу сделать, это перезапустить накопленные значения из серии 2 в 0, когда пользователь нажимает любую кнопку на селекторах диапазона (кнопки масштабирования, то есть 1d, 1w, 1m, все и т. Д.). Поэтому, если пользователь выбирает диапазон, как 1день, 1 неделю или что-то еще, он должен увидеть первую высоту из серии 2 = 0 и другие значения, следующие после этого, нормальный шаблон суммирования ...

Мой вопрос: Что будет правильный способ динамически изменять мои данные Y из серии 2, чтобы перезапустить его до 0 и создать это «смещение» по всей серии? Есть ли способ указать значение смещения, чтобы поставить целую серию или мне нужно перебрать всю мою серию и изменить мои данные 1 на 1?

Также в каком случае я должен инициировать это изменение? В событии setExtremes xaxis?

Большое спасибо за любые предложения

ответ

1

Наверняка вам нужно использовать afterSetExtremes обработчик события.

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

+1

Я перебираю myChart.series [0] .points и создаю новый массив со значением Y, смещенным без проблем ... Однако, make myChart.series [0] .setData (myNewArrayOfData) снова запускает событие afterSetExtremes и вводит бесконечный цикл ... Должен быть лучший способ сделать это нет? –

+0

И если я попробую обновить существующие точки 1 на 1 вместо создания новой серии с чем-то вроде: myChart.series [0] .points [i] .update (5, false), диаграмма не обновляется, поэтому мои изменения не применяется ... Если я сделаю перерисовку, мои изменения, похоже, будут отброшены ... В этом процессе изменения данных я не понимаю ... –

+1

Бесконечная петля? Хм .. в этом случае добавить некоторый флаг, например: 'loop = false; ..setData (NewData); loop = true; ', а затем в afterSetExtremes проверить цикл:' if (loop) {.. делать вычисления ..} else {.. do nothing ..} '. –

Смежные вопросы