【问题标题】:GraphStream nodes with input and output ports具有输入和输出端口的 GraphStream 节点
【发布时间】:2015-06-04 16:49:37
【问题描述】:

我想在 GraphStream 中对图形进行建模并使用其查看器进行渲染,但我的节点需要具有不同的输入和输出端口(最好在左侧和右侧)节点框),边应该连接这些端口而不是节点中心。

这在 GraphStream 中是否可行?如果没有,是否有另一个可以使用的 Java 库?我知道 GraphViz Dot 允许这样做,但我不想通过命令行调用它,因为这会引入不属于我的项目的外部依赖项。

编辑:我想渲染的那种东西的例子(但对于一个非常不同的域):

我非常愿意自己进行渲染,但当然我仍然需要节点和边的路由和坐标。

【问题讨论】:

    标签: java graph rendering graphviz graphstream


    【解决方案1】:

    我无法使用 graphstream 实现此功能,但其他框架支持此类功能,例如:

    【讨论】:

      【解决方案2】:

      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");
      

      这会给你类似的东西:

      【讨论】:

      • 有没有办法“拆分”一个节点,有效地为每个端口创建单独的节点,然后以某种方式将它们紧密粘合在一起,尊重左右位置?
      • @WouterLievens 你确实可以创建多个节点,但是没有简单的方法将它们组合在一起。你必须自己处理他们的位置。您可能永远不会获得接近您在帖子中添加的数字的任何东西。实际上很难从像 GraphStream 这样的通用图形库中期待这种特性:(
      • 我明白这一点。似乎 GraphStream 的重点更多地放在非常大和/或动态的图上,而不是微小的复杂图结构。当然,这很好。您知道哪个(可嵌入的)java 库可能适合处理节点上带有端口的图的路由吗?
      • 我也面临类似的可视化图表问题。是否有任何其他框架可以处理具有端口或节点组可视化的节点?
      猜你喜欢
      • 2011-05-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 2017-06-15
      相关资源
      最近更新 更多