Search
Write a publication
Pull to refresh

Визуализация графов на 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.

Надеюсь перечисленные выше библиотеки пригодятся в вашей работе и станут украшением вашего проекта, а можеть быть и неотъемлемой частью функционала.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.