Я хотел бы реализовать граф на Java.Я определил класс Node
и класс Edge
, и график представлен списком узлов, и для каждого узла список ребер, начиная с узла, определяется как поле узла.Теперь я хотел бы использовать библиотеку Java для визуализации графика.
В настоящее время я пробовал graphviz-java .Результат соответствует моему требованию, но ребра и узлы расположены неправильно.См. Следующий график ниже:
Я создал график с API, который он предоставлял, например node(xxx)
, addLink()
, обходя список узлов моего графика вместо генерацииТекст файла необработанных точек.
Ключевой код создания графика следующий:
for (LiteralNode litNode : literalNodeArrayList)
{
MutableNode mutableNode = mutNode(litNode.getNodeElement());
for (Edge e : litNode.getEdgeList()) {
MutableNode endNode = mutNode(e.endNode.getNodeElement());
mutableNode.addLink(to(endNode.port(Compass.NORTH)).add(Arrow.VEE));
}
mutableNodes.add(mutableNode);
g.add(mutableNode);
}
Это в основном простой обход с циклами.Узел и ребра динамически изменяются в зависимости от ситуации.
Мне бы хотелось, чтобы узел и ребра корректировали местоположение, чтобы улучшить отображение графика.Я также пытался использовать json file и d3js для визуализации графика, но я обнаружил, что эти библиотеки слишком сосредоточены на отображении огромного количества узлов и их распределений, которые мне не нужны.Мне нравится структура графика, обеспеченная некоторой стратификацией.Поэтому я хотел бы получить некоторые рекомендации.
Я упомянул файл json, потому что, если нет доступной библиотеки Java, я мог бы также попробовать какую-нибудь библиотеку javascript, например d3js, и использовать java только как инструмент бэкэнда для генерации файла json, который мне нужно ввести.Таким образом, рекомендация не ограничивается Java.