如何通过JGraphT可视化表示边缘权重?

时间:2012-11-14 12:06:53

标签: java jgrapht

我尝试使用Weight创建Java JGraphT可视化,例如:

http://i.stack.imgur.com/KXRrc.png

现在我想更改边缘标签(例如:(a:b)到它的边缘权重(例如:2)。 我试图在Javadoc搜索,但没有看到任何东西。 请帮帮我谢谢!

2 个答案:

答案 0 :(得分:4)

这些边标签来自边缘对象的toString方法。因此,您可以创建自己的边缘类并覆盖toString方法,使其产生边缘权重。

您可以像这样创建自定义边缘:

class MyWeightedEdge extends DefaultWeightedEdge {
  @Override
  public String toString() {
    return Double.toString(getWeight());
  }
}

然后创建这样的图形,这将使图形创建边缘作为MyDefaultEdge的实例,因此在可视化中仅显示边缘权重:

SimpleWeightedGraph<String,MyWeightedEdge> graph
  = new SimpleWeightedGraph<String,MyWeightedEdge>(MyWeightedEdge.class);

答案 1 :(得分:0)

JGraphT是Generic实现的,因此当您通过Edge类时,只需在各自的类中实现toString()方法。 例如。假设“City”是我的Vertex类,“Path”是我的Edge,所以在那里实现toString()方法

class Pathe{
  @Override
  public String toString() {
    return "Distant Between" +this.source +"this.dest" "is" + this.distance;
  }
}