JFreechart Realtime Combined Plot - Рендеринг предыдущего значения для подшагового шага, если точка данных не была получена - PullRequest
2 голосов
/ 20 июля 2009

У меня есть комбинированный график в JFreechart, состоящий из 4 временных рядов с общей осью временной области.

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

Я бы хотел иметь возможность сделать что-то вроде этого:

  • Точка цены получена в момент времени T и нанесена на график
  • В момент времени T не было получено данных для диаграммы положения, и поэтому мы предполагаем, что значение не изменилось, и отображается значение предыдущей позиции, то есть растягивает линию шага по горизонтали
  • В момент времени T + 1 точка положения принимается и строится с изменением диаграммы шага
  • В момент времени T + 1 ценовой пункт не получен, поэтому на графике отображается предыдущая цена

Есть ли простой способ сделать это в JFreechart? В настоящее время у меня есть рабочая реализация, но она не обрабатывает рендеринг предполагаемых значений.

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

1 Ответ

3 голосов
/ 20 июля 2009

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

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

Я бы отделил обновление графика от обновлений позиции / цены, что бы ни случилось, на случай, если вы будете завален изменениями позиции / цены. Вы не хотите, чтобы это преобразовывалось в обновления нескольких графиков, которые вам придется немедленно выбросить.

...