比较用于绘制网络拓扑的开源 java 图形绘制框架(JUNG 和 Prefuse)

2024-03-12

对于具有以下要求的网络图,可以使用哪些开源 Java 图形绘制框架?该图的节点数将少于 1000 个。

1) 有平行边
2) 单个图中的有向边和无向边
3)图像表示的节点
4)用户与节点和边的交互
5)动态添加/删除节点和边
6)节点和边上的多重标记,用户可以关闭/打开不同级别的标记。 (就像分层绘制和关闭/打开图层一样)
7) 不同的布局算法来显示星形、环形、网状拓扑

我评价了JUNG和Prefuse。这是我为我的每个要求找到的。

1) Prefuse 无法显示平行边,而 JUNG 支持。可以操纵 prefuse 代码来显示平行边缘吗?由于这涉及基本数据级别的更改,我相信这比通常的自定义渲染更改更困难。

2)我在 prefuse 和 JUNG 中都没有找到任何对组合图(有向边和无向边)的引用。还有人知道吗?

3) 对于 Prefuse 和 JUNG 来说这似乎很容易

4) 同样,prefuse 和 JUNG 都提供了对用户交互的支持。

5)prefuse和JUNG都支持。重绘图表时每个框架的表现如何?我在另一篇文章中看到 prefuse 对于动态更新表现不佳( https://stackoverflow.com/questions/502763/prefuse-toolkit-dynamically-adding-nodes-and-edgesPrefuse Toolkit:动态添加节点和边 https://stackoverflow.com/questions/502763/prefuse-toolkit-dynamically-adding-nodes-and-edges)

6) 这归结为修改图形并重新绘制它。所以问题就和5)一样了

7)JUNG和prefuse都有多种布局算法。但是当我尝试在 JUNG 和 Prefuse 中使用 FruchtermanReingoldLayout 显示相同的数据集时,我得到了不同的显示。有什么想法吗?不知何故,Prefuse 中的布局算法似乎比 JUNG 中显示更好的布局(我认为渲染也更好),尽管 Prefuse 中的大多数布局算法都基于 JUNG 实现。 Prefuse 布局如 ForceDirectedLayout/FruchtermanReingoldLayout 和 CircleLayout 直接映射到星形、圆形、网状拓扑。

除了这些要求之外,prefuse 对表达式和查询语言有很好的支持,但看起来不像 JUNG 那样积极开发。哪一个的可视化效果更好?关于哪一种适合以及如何克服缺点有什么建议吗?

还有其他我可以使用的框架吗?


我是 JUNG 的创建者和维护者之一,所以在下面的回复中请记住这一点。

不过,首先我应该说 Prefuse 的作者是朋友的朋友(是的,我们见过),他做得很好。我对 Prefuse 没有经验,但我见过用它创建的一些漂亮的可视化效果。

以下是荣格对这些问题的回答。其中几个((1)、(2)、(4)在PluggableRendererDemo:

  1. 支持(您需要正确的数据模型,出于性能原因,并非所有模型都支持平行边)
  2. 支持(同样,您需要正确的数据模型)
  3. 支持(参见ImageShaperDemo)
  4. 支持(大多数演示)
  5. 支持(参见GraphEditorDemo)
  6. 不直接支持,尽管您当然可以动态更改标签并使用 HTML 呈现复杂的标签。
  7. JUNG的布局算法更适合一般网络(树等也有少数例外)。不过,您当然可以构建自己的布局算法,并且许多算法已经这样做了。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较用于绘制网络拓扑的开源 java 图形绘制框架(JUNG 和 Prefuse) 的相关文章

  • 将所有 BigDecimal 运算设置为特定精度?

    我的Java程序以高精度计算为中心 需要精确到至少120位小数 因此 程序中所有非整数都将由 BigDecimal 表示 显然 我需要指定 BigDecimal 的舍入精度 以避免无限小数表达式等 目前 我发现必须在 BigDecimal
  • 初始向量(IV)的CTR模式使用

    据我所知 CTR 模式不使用初始向量 它只需要一个计数器 用给定的密钥对其进行加密 然后将结果与明文进行异或以获得密文 其他分组密码模式 例如 CBC 在进行加密之前 会使用初始向量对明文进行异或 所以这是我的问题 我在 Java 中有以下
  • 使用 Hibernate 和 Apache DBCP 的 MySQL 连接池问题

    看来我的应用程序有问题 当应用程序在启动后闲置很长时间 我不确定确切的时间 时 我会在日志中收到以下错误消息 我使用 Spring Hibernate MySQL 和 ApacheDBCP 进行连接池 ERROR org hibernate
  • 如何使 ScheduledExecutorService 在计划任务取消时自动终止

    我正在使用一个ScheduledExecutorService如果网络连接已打开超过几个小时 则关闭该连接 然而 在大多数情况下 网络连接在超时之前就关闭了 所以我取消了ScheduledFuture 在这种情况下 我还希望执行程序服务终止
  • 在 SWT 中单击鼠标触发事件?

    在SWT中 对于MouseListener接口 可用的方法有mouseUp mouseDown and mouseDoubleClick 如何根据用户点击触发事件 我们可以通过结合来做到这一点mouseUp and mouseDown 但没
  • 竞争性编码 - 以最低成本清除所有级别:未通过所有测试用例

    当我遇到这个问题时 我正在一个竞争性编码网站上解决问题 问题指出 游戏中有 N 个关卡和 M 种可用武器 等级编号从 0 到 N 1 武器编号从 0 到 M 1 您可以按任意顺序清除这些级别 在每个关卡中 需要这些 M 武器的某些子集才能通
  • 将 RequestBody json 转换为对象 - Spring Boot

    我是 java 开发的初学者 但之前有 PHP 和 Python 等编程语言的经验 对于如何进行 Spring Boot 的开发几乎没有什么困惑 我正在开发一个rest API 它有以下请求 key value key1 value1 pl
  • Tomcat - 多个 webapps 文件夹

    是否可以有多个文件夹来放置要部署的应用程序 这些是如何定义的 是否可以将一个文件夹限制为仅是 domain com 的应用程序 而不是其他域 Thanks 看一眼conf server xml
  • Spring Boot 多部分文件始终为 null

    我正在使用 Spring Boot version 1 4 0 RC1 和 Spring Boot Stormpath 1 0 2 我正在尝试使用分段文件上传 但控制器中的 MultipartFile 始终为空 当我使用 RequestPa
  • 为什么java(>=7版本)不支持运行没有main方法的程序? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 class WithoutMain static System out println Without main class Sy
  • java:如何设置全局线程ID?

    是否有可能为线程设置唯一ID 在分布式系统中 线程是在许多不同的机器上创建的 例如通过 RMI 我需要它来创建日志消息 根据我的研究 我知道可以使用 log4j mdc ndc 来完成 但只能在单线程中完成 我的问题是 在创建线程时必须设置
  • 读取不失真的灰度 PNG 图像文件

    我需要读取和处理大量的灰度 PNG 文件 我的意思是 如果它们在 Photoshop 或 GIMP 中打开 则图像模式为灰度 而不是具有灰度值的 RGB 图像 ImageIO 似乎没有实现这一点 它似乎将所有图像文件视为 sRGB 这会破坏
  • iText7 将 SVG 添加到 PdfDocument 中以及可能出现的问题

    关于问题的答案 如何使用 iText7 将 SVG 添加到 PDF 这是一个链接点击这里 https stackoverflow com questions 50059456 how to add an svg to a pdf using
  • 如何在不同的班级中启动和停止计时器?

    我想测量从传入 HTTP 请求开始到应用程序到达某个点的时间 这两个时间点都位于不同的类中 我将如何启动和停止这些不同类别的计时器 我没有看到使用 MeterRegistry 中的 命名 计时器的方法 我该怎么办呢 您可以使用 AOP 如下
  • 如何发现另一个应用程序的意图

    我正在尝试构建一个应用程序来接收来自 StumbleUpon 应用程序的共享 此时 我可以接收浏览器的 共享网址 但是当从 StumbleUpon 共享时 我的应用程序不会显示在列表中 我想我可能没有在清单中注册正确的意图 有什么方法可以找
  • Java 空值检查

    我有一个thread1 if object null object play 和另一个thread2可以写null into object随时参考 我将同时运行这些线程 我知道thread2可以重写object后参考null检查并会抛出Nu
  • 在 Streamreduce 方法中,求和时恒等式必须始终为 0,乘​​法时恒等式必须始终为 1?

    我继续java 8学习 我发现了一个有趣的行为 让我们看一下代码示例 identity value and accumulator and combiner Integer summaryAge Person getPersons stre
  • Java 中 .NET 的 Lambda 表达式

    我最近 再次 从 C 迁移到 Java 但我非常怀念 lambda 表达式和 C 的 IEnumerable Foreach 之类的东西 所以我正在寻找Java中的lambda表达式库 有比这更好的图书馆吗LambdaJ http code
  • 为什么我的 Python 散点图不起作用?

    我使用 pylab 创建了一个非常简单的散点图 pylab scatter engineSize fuelMile pylab show 该程序的其余部分不值得发布 因为正是该行给我带来了问题 当我将 散点 更改为 绘图 时 它会绘制数据图
  • 将 JSON 发送到 Spring MVC 控制器

    我正在尝试将 JSON 发送到 Spring MVC 控制器 在 Spring MVC 方面 一切都配置正确 下面是代码 但似乎没有运行

随机推荐