我想在GraphStream中建模一个图并使用它的查看器呈现它,但是我的节点需要有不同的输入和输出端口(最好分别位于节点框的左侧和右侧),边缘应该与这些端口连接,而不是节点中心。
这在GraphStream中是可能的吗?如果没有,是否还可以使用另一个Java库?我知道GraphViz Dot允许这样做,但是我不希望通过命令行来调用它,因为它引入了一个不属于我的项目的外部依赖项。
编辑:我想呈现的那种东西的示例(但是对于一个非常不同的域):

我非常愿意自己进行渲染,但当然我仍然需要节点和边缘的路由和坐标。
发布于 2015-03-31 12:38:34
GraphStream中还没有在节点上声明锚、句柄或端口的方法。
但是,由于您希望在节点的左侧和右侧收紧边缘,因此您可能希望尝试使用"freeplan“CSS属性。参见下面的示例,特别是图表上的“样式表”属性:
Graph graph = new SingleGraph("FreePlane");
System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer");
graph.display();
graph.setAttribute("stylesheet", "node { "
+ " shape: rounded-box; "
+ " padding: 5px; "
+ " fill-color: white; "
+ " stroke-mode: plain; "
+ " size-mode: fit; "
+ "} "
+ "edge { "
+ " shape: freeplane; "
+ "}");
graph.addAttribute("ui.quality");
graph.addAttribute("ui.antialias");
Node a = graph.addNode("A");
Node b = graph.addNode("B");
graph.addEdge("AB", "A", "B");
Node c = graph.addNode("C");
graph.addEdge("BC", "B", "C");
a.addAttribute("ui.label", "node A");
b.addAttribute("ui.label", "node B");
c.addAttribute("ui.label", "node C");会给你这样的东西:

发布于 2016-11-18 12:07:48
我无法用图流实现这一点,但是其他框架支持这样的功能,如:
https://stackoverflow.com/questions/29367092
复制相似问题