Как стать автором
Обновить

Визуализация графов на JAVA

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

image

Jgraph — это open source бибилиотека для визуализации графов, написанная на Java и полностью совместима со Swing`oм. Библиотека разработана с поддержкой различных представлений сущностей и их отношений, неориентированные грфы, ориентированные графы, мультиграфы, графы с параллельными дугами, гиперграфы. Позволяет использовать различные алгоритмы позиционирования вершин и прочие вкусности, подробности тут.

Элементарный граф с двумя вершинами можно визуализировать следующим образом.

Прежде всего добавляем зависимость в наш pom файл.

jgraph
jgraph
5.5.1



И далее нехитрая форма

package ru.md.habr.graph;

import javax.swing.JFrame;

import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;

public class HabrGraph extends JFrame {

public static void main(String[] args) {
HabrGraph frame = new HabrGraph();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 320);
frame.setVisible(true);

}

public HabrGraph()
{
super("HabraGraph");

mxGraph graph = new mxGraph();
Object parent = graph.getDefaultParent();

graph.getModel().beginUpdate();
try
{
Object v1 = graph.insertVertex(parent, null, "Habra", 20, 20, 80, 30);
Object v2 = graph.insertVertex(parent, null, "Habr", 240, 150, 80, 30);
graph.insertEdge(parent, null, "Дуга", v1, v2);
}
finally
{
graph.getModel().endUpdate();
}

mxGraphComponent graphComponent = new mxGraphComponent(graph);
getContentPane().add(graphComponent);
}

}


В результать получим следующее симпатичное окошко

image

Если Jgraph не понравится советую обратить внимание на не менне мощную библиотеку JUNG.

Надеюсь перечисленные выше библиотеки пригодятся в вашей работе и станут украшением вашего проекта, а можеть быть и неотъемлемой частью функционала.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.