问题标签 [prefuse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
672 浏览

layout - java中的简单网格布局

所以我需要一个带有一些Java对象的“正交”边缘的自动网格布局算法。像这样的东西。我会得到一些矩阵,我将从中创建一个图形实例(在 Eclipse 中),我的输出是该图形的布局(如果输出是某种包含顶点和边坐标的 xml 文件,那就太好了,但这不是必需的)。(要求是这样的,因为我们的对象是某种 UML 类图,将在该矩阵中,并且我们希望布局类似于经典 UML 图)。

我在一些较早的 JGraph 包中找到了 SimpleGridLayout 类,但强烈建议不要使用它,而且我找不到 API。我查看了 Zest、Jung、JGraphx、Prefuse 并且没有包含想要的布局:Zest 没有正交边,Jung 没有网格布局,Prefuse 没有网格(图形)布局,JGraphx 有点复杂,我不能真的找到解决方法。

看起来这些包真的很丰富,当然可以在其中手动制作,但由于项目的性质,需要一些自动化算法。

欢迎所有建议。

0 投票
1 回答
81 浏览

visualization - 将节点添加到强制定向布局时,如何让节点出现在特定的 (X,Y) 坐标而不是左上角?

将节点添加到强制定向布局时,如何让节点出现在特定的 (X,Y) 坐标而不是可视化窗口的左上角?

每当我向我的可视化添加一个自由浮动节点(未通过边缘连接到任何其他节点)时,它总是出现在左上角并一直停留在那里,直到用户单击并将其拖动到他们想要的位置。添加后或用户最后单击的位置如何使节点出现在屏幕中央?

0 投票
2 回答
125 浏览

java - 预装。将鼠标悬停在节点上时,如何更改连接边的可视化?

当鼠标悬停在一个节点上时,我使用这个典型的片段(来自 prefuse 示例)来更改我的一个节点的颜色:

我也想将此节点内外边缘的颜色设置为不同的颜色,最好是输入的颜色与输出的颜色不同,但我找不到要使用的正确谓词。

我正在使用有向图,以防万一。

有没有办法在谓词 API 中迭代当前节点/边缘的子节点/父节点?您对我的实际问题有解决方案吗?

0 投票
1 回答
79 浏览

visualization - 如何在 prefuse 可视化工具包中赋予边缘不同的颜色

我正在使用prefuse,我想知道如何为不同的边缘赋予不同的颜色?

例如,我从 XML 文件中生成了一个包含 5 个节点的图。他们的数字是 0,1,2,3,4。在程序中,我希望开始节点为 3 且结束节点为 4 的边缘被涂成红色,而其他节点被涂成其他颜色。我怎样才能做到这一点?

0 投票
0 回答
419 浏览

java - Android:提高绘图应用程序的速度

背景信息:我正在将prefuse 框架分配给 android(我命名为 AndroidPrefuse)。我已经完成了大部分工作,它至少适用于一个可视化(散点图)。我注意到“高”数据量(超过 10000 个项目)的 android 版本非常慢。

我注意到 prefuse(在桌面版本中)确实使用 BufferedImage 来绘制。我认为这是为了获得性能。这是代码:

起初我确实在 AndroidPrefuse 跳过了这种“缓冲”。在我注意到性能问题后,我尝试了这个:

但结果是一样的。我是android新手,因此问题可能很简单:

第一个问题:我做对了吗,即与prefuse original 一样吗?

我感觉上面的代码和“非缓冲”是一样的:

我对吗?如果是的话,有没有办法像原来的prefuse(使用BufferedImage)一样提高我的AndroidPrefuse的速度?

“paintDisplay”方法呈现所有项目。对于 10000 个项目,它需要 1100 毫秒(在三星 Galaxy S5 上)。它看起来不多,但是当我平移和缩放时,应用程序不再流畅,因为它有 100 个项目。

作为记录:我还将 View 实现为 SurfaceView 并在单独的线程中处理方法“paintDisplay”。但这并没有提高速度。

如果使用位图来提高性能不是一个好的解决方案,有人知道如何提高性能吗?

0 投票
1 回答
50 浏览

visualization - 在 Prefuse 的 ForceDirectedLayout 中实现自定义力

我想将自定义力添加到 Prefuse 中的力导向布局。具体来说,我想让 a) 特定节点之间的边非常刚性,b) 引入有向边,使得源顶点倾向于在目标顶点上方移动。

任何线索如何进行?

0 投票
1 回答
2551 浏览

java - 部分在 JPanel 之外预置示例图

我想使用Prefuse来可视化图表。我按照他们的教程并尝试了他们的示例应用程序。它的源代码可以在这里找到

但是,即使我只是简单地复制了完整的代码,生成的图表也不会像教程中显示的那样。它只有一半可见,卡在 JPanel 的左上角。它的某些部分丢失了,因为它们必须显示在面板之外。我尝试了一些我自己的图表,但我一直遇到同样的现象。

我想这不是预期的行为,但我不知道在哪里寻找问题。我不知道这是否是 Swing(x) 或 prefuse 或 ... 的问题?

更新: 这是修改后的代码。我与示例没有太大变化,只是添加了垃圾神建议的内容。

}

0 投票
1 回答
407 浏览

java - Prefuse graph手动设置力参数

就像这里一样,我的 Prefuse 图太密集了,看不到任何东西。所以我尝试了@bcr 在接受的答案中建议的方法。但是,它对我不起作用。这是我尝试过的:

我检索了默认设置。然后我更改了NBodyForcefrom ForceSimulator(called Distance) 的第二个参数和SpringForce(called DefaultSpringLength) 的第二个参数,并将它们连同其他默认值一起输入到我的 newForceSimulator中。但是输出中没有任何变化。我怎么了?

这是我的代码:

0 投票
0 回答
80 浏览

java - 用于计算的有效类型转换

我有一个 prefuse-table 结构,即每一行都由一个元组表示,您可以通过table.get(rowNumber, columnName)或 via访问值tuple.get(columnName)- 而 get 将返回一个Object更具体的方法,如果您知道返回类型,例如getDouble()or getInt()

除了数字之外,该表还存储时间,可用作String、 ie08:1520:10。为了计算适当的平均值,我必须使用两次之间的距离(例如,11:55或者更精确715地以分钟为单位)。

因此,每个数字都分配了一个区间长度,用作加权因子,即tuple.getDouble("sales") * 60 / Double.valueOf(interval)。此外,它被添加到一个名为meantype的变量中Number(我使用它是因为它可以灵活地使用多种数字类型)。所以总的来说,这条线看起来像mean = mean.doubleValue + tuple.getDouble("sales") * 60 / Double.valueOf(interval);

但并非所有数字列都是类型double,因此,我对 int、float 和 long 有相同的行。他们只是看起来像mean = mean.intValue + tuple.getInt("aColumn") * 60 / Integer.valueOf(interval)等等。当然,在我的情况下,我会事先检查一列是哪种类型,最后得到四个ifs 和四行计算。

现在我想知道是否有一种有效的方法来对我需要的所有参数进行类型转换。我可以通过简单地使用来评估列的类型Class type = column.getColumnType();

我想不出一种更有效(更好看)的方法来设计它,因为如果我尝试type.cast()在计算中使用,我会被告知

运算符 * 未定义参数类型 Object, int

有没有办法动态地对此类计算进行类型转换(可能使用不同的数据结构,即不使用Number)?我现在所拥有的并不可怕,因为它正在工作,只是我并不真正满意,看看另一个人是否会继续使用这段代码是很糟糕的。

0 投票
0 回答
31 浏览

java - 如何使用 prefuse jar 文件显示边缘的重量

我正在使用 Prefuse lib 并创建一个有向图。

为了创建图表,我使用了

edgeTable 包括

列 sourceNode、targetNode 和权重

的边缘。

我需要显示边缘的重量。