Какие алгоритмы подходят для интерактивного рисования графиков в реальном времени?

Какие алгоритмы подходят для интерактивного рисования графиков в реальном времени для данных в реальном времени и прямого управления?

В противном случае - какие библиотеки вы используете для рисования графиков?

Предложения;

  • Prefuse инструментарий визуализации информации
  • любые другие?

Кстати, я имею в виду графики в смысле теории графов - точки и линии.

  • любой язык
  • Под живым я подразумеваю, что график должен быть управляемым один раз на экране.

person Stephen    schedule 05.12.2008    source источник


Ответы (7)


Я бы порекомендовал любую библиотеку, над которой работал Джефф Хир:

Я считаю, что все три проекта имеют открытый исходный код. Джефф Хир довольно хорошо умеет ссылаться на документы в своем коде, по крайней мере, в библиотеке Prefuse. Смотрим на источник Prefuse:

BalloonTreeLayout: использован алгоритм Г. Мелансона и И. Германа из их исследовательской статьи «Круговые рисунки корневых деревьев», отчеты Центра математики и компьютерных наук, номер отчета INS – 9817, 1998.

ForceDirectedLayout.java: ссылки не упоминаются, но есть много комментариев, описывающих, как это работает.

FruchtermanReingoldLayout.java: ссылки на Юнга. На их веб-сайте я нашел статью , в которой есть ссылки на различные алгоритмы

NodeLinkTreeLayout.java. Используется алгоритм Кристофа Буххайма, Михаэля Юнгера и Себастьяна Лейперта из их исследовательской статьи Улучшение алгоритма Уокера для выполнения в линейное время, Graph Drawing 2002. Этот алгоритм исправляет проблемы с производительностью в алгоритме Уокера, который обобщает метод Рейнгольда и Тилфорда для аккуратных чертежей деревьев для поддержки деревьев с помощью произвольное количество детей в любом заданном узле.

RadialTreeLayout.java. Используется алгоритм Ка-Пинг Йи, Дэниела Фишера, Рахна Дхамия и Марти Херст в их исследовательской статье Анимированное исследование динамических графиков с радиальной компоновкой, InfoVis 2001. Этот алгоритм вычисляет радиальную компоновку, которая учитывает возможные вариации размеров, и поддерживает как ориентацию, так и ограничения порядка для облегчения плавных и понятных переходов между конфигурациями макета.

SquarifiedTreeMapLayout: этот конкретный алгоритм заимствован у Bruls, D.M., C. Huizing и J.J. ван Вийк, "Квадратные древовидные карты" в Data Visualization 2000, Proceedings of the Joint Eurographics и IEEE TCVG Sumposium on Visualization, 2000, pp. 33-42. Доступно в Интернете по адресу http://www.win.tue.nl/~vanwijk/stm.pdf. Для получения дополнительной информации о TreeMaps в целом см. http://www.cs.umd.edu/hcil/treemap-history

person Jay Askren    schedule 20.01.2010
comment
Я читал исходники трех программных проектов и редко вижу цитаты в коде! (Включен предварительный предохранитель, но не два других, о которых вы упомянули) - person Stephen; 22.01.2010
comment
Я нашел довольно много. См. Мой обновленный ответ. Просто посмотрите на классы макета, чтобы найти ссылки. - person Jay Askren; 22.01.2010

инструментарий визуализации prefuse выглядит хорошим кандидатом.

Prefuse поддерживает богатый набор функций для моделирования, визуализации и взаимодействия данных. Он обеспечивает оптимизированные структуры данных для таблиц, графиков и деревьев, множество методов компоновки и визуального кодирования, а также поддержку анимации, динамических запросов, интегрированного поиска и подключения к базе данных. Prefuse написан на Java с использованием библиотеки 2D-графики Java и легко интегрируется в приложения Java Swing или веб-апплеты. Prefuse лицензируется в соответствии с условиями лицензии BSD и может свободно использоваться как в коммерческих, так и в некоммерческих целях. (с домашней страницы)

person Stephen    schedule 28.12.2008

Рисование графика - это большое поле. Вот ссылка на веб-сайт сообщества исследователей рисования графиков. У них есть ежегодная конференция, посвященная рисованию графиков. Я также могу предложить прочитать некоторые из Проф. Публикации Дэвида Харела - одна из областей его исследований - рисование графиков, например этот документ. В общем случае эту проблему трудно решить. Возможно, вы можете ограничить свое приложение некоторым ограниченным подмножеством графов (планарные графы, вероятно, слишком строгие). Вероятно, простые графы с небольшим набором вершин упрощают манипуляции.

person Yuval F    schedule 29.12.2008


Я использую язык Dot для описания графиков. Кроме того, вывод компилятора Dot включает SVG, который находится в XML и может быть встроен в XHTML.

http://en.wikipedia.org/wiki/DOT_language
person yogman    schedule 06.12.2008
comment
не интерактивный как таковой, хотя приложение для iphone "instaviz" интересно. - person Stephen; 22.01.2010

Не уверен, что вам нужно ...

похоже, вы хотите сделать что-то похожее на rrdtool?

Возможно, на их сайте есть информация, которая поможет:

http://oss.oetiker.ch/rrdtool/

person benlumley    schedule 06.12.2008

Я новичок в stackflow, поэтому извиняюсь за поздний ответ. В зависимости от того, насколько интерактивным вы хотите стать ... вы также можете не проверять Flot (использует JQuery, менее интерактивный) или обработка ... более интерактивный.

person Vince    schedule 14.01.2009