Java - 可以绘制基本的力导向无向图(顶点,边)?

时间:2014-03-21 03:32:48

标签: java graph drawing

我正在尝试用Java创建一个类,它将扩展另一个名为Graph的类。

图表类的轮廓如下:

  • 图构造函数
  • adjacent(int i,int j)
  • addEdge,removeEdge方法
  • addVertex,removeVertex methods
  • 邻居方法
  • numOfEdges方法
  • averageDegree method
  • 周长法

我想知道是否有可能使用我制作的图表类在Java中绘制一个非常基本的力导向无向图。我希望我的图表在视觉上令人愉悦!

如果是这样,有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

你的问题到底是什么?如果你问你的类是否包含足够的信息以允许应用基于力的布局,那么显然答案是否定的:你至少需要表示节点的位置^^(例如使用额外的x和y节点属性)。

关于算法本身,您是对自己实现它的过程感兴趣,还是只对结果感兴趣:以一种很好的方式显示图形?在前一种情况下,您可以先看看(Fruchterman & Reingold '91)或(Kamada & Kawai '89)等开创性论文。两篇文章都明确给出了提出的算法。在后一种情况下,您可以查看现有的实现,其中有很多实现。也许对你来说最方便的是Gephi与布局相关的类,因为这个开源软件(available on GitHub)本身就是用Java编写的。

在任何情况下,您还可以查看与此主题相关的其他SO帖子,例如Kamada & Kawai graph layout algorithm?Force-directed graphing