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

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

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

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

уточнения:

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

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

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

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

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

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

Ответы [ 16 ]

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

JPGD - это анализатор Graphviz на Java. Это немного заброшено, но код хороший и понятный, и если вы найдете ошибки, я уверен, что автор примет исправления.

Хотя его рекламируют как парсер, он также является генератором. Вы можете построить Graphs как коллекции объектов Node и Edge, а затем получить .dot с помощью Graph.toString (). Получить это в виде графики было бы простой оболочкой для исполняемого файла Graphviz dot.

Кроме того, точку очень легко создать самостоятельно. В простейшем случае это просто вопрос написания заголовка в горшке

digraph myGraph {

... за которым следует одно определение ребра для каждого ребра

node1 -> node2 ;

... с последующей закрывающей скобкой

}
0 голосов
/ 02 марта 2009

См. этот вопрос , особенно ответ Стефана о префузе. Я читал, что вам не нужна интерактивность, но префузия все еще может быть полезной.

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

Вы можете использовать SVG в сочетании с батиком. Я использовал это несколько раз для отображения графики. Батик с Java 1.5 очень быстрый. С помощью этого решения вы можете программировать свой граф на Java без зависимости от Swing. Вы можете добавлять метки, где хотите, размещать их в виде сервлета и отображать их как png или svg.

Вы можете создавать графики в SVG (это документ XML).
Вы используете Батик для преобразования SVG-документа в изображение PNG / JPG.
Вы можете использовать сервлет для потоковой передачи этого изображения обратно в браузер.

В Java вы создаете документ SVG (= XML). Образцы графиков SVG можно найти здесь: Направленный граф и здесь: Простой ориентированный граф

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

JFreeChart может быть тем путем, которым вы хотите идти, но вы делаете различие между диаграммами и графиками. Может быть, вы можете объяснить, что вы подразумеваете под этим. Я обычно использовал эти термины как синонимы. :)

JFreeChart имеет хорошие разброс, гистограммы и линейные графики, а также забавные, такие как Pie и Dial, так что, возможно, это будет работать для вас.

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

Я могу искренне рекомендовать flot - отлично!

См. примеры здесь .

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

Может проверить Google Charts ?

...