Как получить данные для скрытых серий в Hightcharts / Highstock? - PullRequest
0 голосов
/ 26 сентября 2019

Я использую highcharts / highstock и их документацию .

Мне нужно динамически добавить серию (один раз после загрузки исходных данных диаграммы) иМне нужно скрыть серию, чтобы она не отображалась на графике (но все еще существует).Причина в том, что мне нужно применить индикаторы к определенному временному диапазону, и для этого я использую скрытые ряды (которые на самом деле работают).

Мне также необходимо иметь доступ к данным скрытого ряда в любое время, но здесь возникает моя проблема.Если я пытаюсь получить доступ к моей скрытой серии, например:

console.log(chart.get('hidden-series').data);

, тогда возвращается пустой массив.

У меня есть полный код в следующем jsfiddle и вот краткое объяснение того, что я там делаю:

Нажав на первые две кнопки, я динамически добавляю две серии series2 и series3.Один из них добавлен «нормально» (он виден), а другой добавлен, чтобы не отображаться на графике (используя false, false в качестве второго и третьего параметров в методе addSeries - что я не уверен, что на самом делеэто означает, что поскольку это был устаревший код, и я нигде не могу найти соответствующую документацию для этого).

И затем с помощью последних кнопок я пытаюсь получить данные для каждой серии.Как вы можете заметить из моего тестового примера, даже при добавлении series3 (он не виден) при попытке получить данные это пустой массив.

Если я прокомментирую два параметра false встрока:

}, false, false); 

данные будут получены, как и ожидалось, но будет отображена серия (и это не то, что я хочу).

Есть ли другой способ полученияданные из невидимых серий?Или, может быть, правильное описание параметров в методе addSeries также может помочь в понимании проблемы.

РЕДАКТИРОВАТЬ: (добавьте причину, по которой мне это нужно, на основекомментарии ниже)

Причина, по которой мне нужна эта функция: мне нужен индикатор VWAP на графике, который должен применяться только для текущего дня (поэтому началос 00:00 до текущего момента), хотя сам график содержит данные за несколько дней.

Итак, я делаю следующее: я беру подмножество данных, представляющих только текущий день,скрыть это подмножество и использовать его данные, чтобы показать индикатор VWAP только для этого определенного временного диапазона.

Начальная загрузка индикатора работает как положено.Мне нужно иметь доступ к этим данным, поскольку диаграмма обновляется в режиме реального времени, и мне нужно иметь возможность динамически добавлять новые точки в общую серию данных, а также в скрытое подмножество для текущего дня.

1 Ответ

0 голосов
/ 26 сентября 2019

Относительно документов: вы используете только часть документов, описывающую опции , а не методы .Вы можете найти методы и реквизиты на вкладке «Классы», например addSeries: https://api.highcharts.com/class-reference/Highcharts.Chart#addSeries - параметры, которые вы установили для false, равны animation и redraw - определенно не то, чего вы хотите достичь:)

Чтобы достичь того, что вам нужно, вы должны:

  • добавить третью серию, как и первую (с redraw=false)
  • , скрыть эту серию с помощьюseries.visible и series.showInLegend опции установлены в false (если вы отключили легенду, не нужно устанавливать showInLegend)

Теперь вопросВот почему вам нужно series.data.Единственная причина использовать экземпляры Point Class - вызывать такие методы, как point.remove() или point.update().Так как эта серия всегда скрыта, я думаю, что это не так.

Если вам не нужны реальные очки, только некоторые данные из них, то у вас всегда есть доступ к набору данных, который вы использовали для создания серии, верно?Как и chart.addSeries({ data: [ ... ]}).

В любом случае вы можете принудительно генерировать точки следующим образом: https://jsfiddle.net/BlackLabel/nqsemy3z/2/ - обратите внимание, что методы series.processData() и series.generatePoints() не являются частью API .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...