Оптимизированное графическое изображение для сети - PullRequest
11 голосов
/ 18 февраля 2009

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

Я хочу отобразить ориентированный граф на сервлете / картинке, которая отображается в браузере. Должна быть какая-то оптимизация позиции. Никакая зависимость от Swing не будет предпочтительной. Алгоритмы не важны, так как структура графа определяется бизнес-логикой. Было бы желательно иметь возможность добавлять метки к краям. было бы оптимальным, если бы я мог служить в качестве png / svg.

Какую библиотеку / службу вы бы порекомендовали?

уточнения:

1) Все дело в Графиках - например, Направленный ациклический граф - НЕ - Графики .

2) flot, Google Charts - не могу строить графики, только диаграммы или я что-то пропустил?

3) нет мне не нужна интерактивность

4) График будет хорош, но Java-библиотека Grappa довольно устарела и построена на колебании / AWT. хотя теоретически возможно сделать рендеринг свинга к изображениям, это не будет моим любимым способом сделать это в серверном приложении.

5) было бы хорошо использовать онлайн-сервис, где изображения не размещаются локально.

редактировать: добавлены ссылки на Википедию для уточнения термина графика / диаграммы

Ответы [ 16 ]

8 голосов
/ 18 февраля 2009

Взгляните на graphviz

6 голосов
/ 28 февраля 2009

yFiles может быть полезно для этого.

5 голосов
/ 25 февраля 2009

Как насчет точечного компонента Graphviz? Он создает графики (не диаграммы), выводит в PNG и SVG, а также поддерживает маркировку ребер. Вы можете выложить в точку, чтобы создать нужное изображение, и вернуть тег img, который ссылается на это. Кроме того, вы можете вернуть тег img, который ссылается на URL-адрес, который сгенерирует необходимый граф (или получит кэшированную копию). Вот точечная информация:

http://www.graphviz.org/pdf/dotguide.pdf

Вы также можете взглянуть на WebDot, который, очевидно, предназначен для этой цели:

http://www.graphviz.org/webdot/

3 голосов
/ 24 января 2013

Мы создаем mxGraph для таких требований. Мы действительно выпустили его в 2006 году, но потребовалось время, чтобы заметить этот вопрос ...

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

Для serverside , попробуйте JUNG , вы можете запустить его против Batik и создавать красивые файлы SVG или PNG. JUNG имеет приятный дизайн и очень мощные алгоритмы компоновки ...

Кроме того, поскольку вы упоминаете, что "было бы хорошо использовать онлайн-сервис " , graphviz предоставляет сервис под названием webdot для визуализации графиков.

Есть и другие по этой линии ... например http://graph.gafol.net/ (похоже, вниз)

Клиентская сторона:

  • Попробуйте http://arborjs.org/ для минимальной (ish) библиотеки, которая предназначена для разметки, используйте ее, если вам нравится предпочитать ваши собственные процедуры рендеринга (div, canvas, svg, paper.js, processing). .. и т. д.)

  • Мне также нравится http://sigmajs.org/ для более полного подхода, встроенной поддержки касания, плагинов, форматов файлов и т. Д.

3 голосов
/ 03 марта 2009

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

Посмотрите, например, на запись в Википедии о Алгоритмы, основанные на силе - в ней есть псевдокод и несколько ссылок, которые могут быть полезны.

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

3 голосов
/ 20 февраля 2009

Попробуйте aiSee . Он используется всеми видами веб-приложений для интеллектуального анализа данных , статического анализа программ , матричной визуализации , сетевого анализа и этажерка. Он также используется некоторыми MediaWikis в качестве бэкенда макета.

У них есть огромная база данных образцов графиков на сайте aiSee.com. Проверьте это. Он поддерживает метки ребер, экспорт в сопоставленные SVG и HTML и не зависит от Swing.

2 голосов
/ 26 апреля 2012

Вы можете попробовать sigma.js: http://sigmajs.org/

Это легкая библиотека с открытым исходным кодом в Javascript для отображения больших графиков в Интернете.

2 голосов
/ 07 ноября 2011

Интересно, что проект Eclipse имеет компонент / инфраструктуру SWT / JFace, способный отображать и генерировать (импортировать / экспортировать) формат Graphviz 'DOT' на чистом Java:

ZEST (домашняя страница и ссылки для скачивания)

См. http://wiki.eclipse.org/Graphviz_DOT_as_a_DSL_for_Zest для примеров использования.

Несмотря на то, что ZEST рекламируется как плагин Eclipse, кажется, что API-интерфейсы для манипулирования DOT могут использоваться автономно и вне установки Eclipse.

Приветствия

Rich

1 голос
/ 03 марта 2009

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

...