2010-02-27 65 views
4

我正在使用JUNG作为项目,当我显示比较大的图形,例如1500个节点时,我的电脑将无法处理它(图形被渲染,但如果我想导航图形,系统变得非常慢)。有什么建议么。JUNG无法显示大图?

回答

2

因此,有两件事情,JUNG可视化并不总是规模非常好,现在:

  1. 迭代力指向布局
  2. 互动:找出哪个节点或边缘(如果有的话)被悬停和点击事件引用。

听起来好像是后者现在正在运行。

根据您的要求,你有两个选择:

  • (一)关闭鼠标事件,或者至少悬停事件
  • (二)破解可视化系统,使事件的查找目标不是O(m + n)。

简单的解决方案(b)基本上只是将查看区域划分成小块,并只发送事件到与指针位于同一块的元素。 (很明显,你制作的块越小,需要的内存就越多。)

我们有计划要做(b)(和设计草图)一段时间,但一直在研究其他的东西。任何想要提供更持久解决方案的人,请与我联系。

+0

我不确定这些是最大的减速。图形的平移/缩放会导致大量重绘()调用。这又会产生大量的'renderEdge'和'renderVertex'调用。顶点填满第二位。根据我的经验,这已经超过CPU时间的40%。有人说,我不知道当摄像机移动时你不会重新绘制顶点和边缘...... – sdasdadas 2013-09-24 19:09:01

+1

够正确。但是,当您平移和缩放时会出现这些问题,但这并不总是相关的,而布局总是存在问题,并且经常出现悬停/点击。顺便提一句,你提出的问题是,为什么可视化系统有能力在没有实际更新可视化的情况下提前布局,直到你认为它是稳定的,这至少可以防止在布局更新期间杀死你的CPU(尽可能多)。 – 2013-09-26 04:58:45

+0

我现在正在研究同样的问题 - 在核心JUNG库中最近两年有什么改进?滚动低于1000个节点的图形时遇到严重滞后。 – Rekin 2014-12-18 09:42:32

2

启动虚拟机的内存是多少?假设你在windows上工作,看着任务管理器,虚拟机是否达到了分配的最大内存量并开始使用交换?

0

问题可能在于计算顶点的位置。我发现相当容易计算的唯一布局是树布局,显然这不适用于所有数据集。

解决方案可能是编写自己的自定义布局,比使用FRLayout少得多的计算。