Tag: graph

如何使用Jung(java库)以编程方式平移VisualizationViewer?

经过大量的调查,我无法找到以下问题的方便答案:如何用Jung以编程方式平移VisualizationViewer? 我有一个GUI,其中包含我的图形顶点列表,我希望双击列表中的一个项目(即节点描述),对我单击的节点执行VisualizationViewer的“居中操作”。 如何编码这样的行为? 看起来很简单,但我找不到方便的答案。 如果有人可以提供帮助,谢谢! njames

检测图表中的所有圆圈

我有一个存储在Map数据结构中的有向图,其中键是节点的ID,[value]是由关键节点指向的节点的nodeIds的数组。 Map map = new HashMap(); map.put(“1”, new String[] {“2”, “5”}); map.put(“2”, new String[] {“3”}); map.put(“3”, new String[] {“4”}); map.put(“4”, new String[] {“4”}); map.put(“5”, new String[] {“5”, “9”}); map.put(“6”, new String[] {“5”}); map.put(“7”, new String[] {“6”}); map.put(“8”, new String[] {“6”}); map.put(“9”, new String[] {“10”}); map.put(“10”, new String[] {“5”}); map.put(“11”, new String[] {“11”}); 我写了一个递归搜索算法,试图在图中找到圆圈。 Set nodes […]

Java Library生成交互式Graph

我希望将我们的SOA服务可视化为图形。 我们有商业服务和域名服务。 -> domain service 1 eg business service 1 -> domain service 2 -> domain service 3 我目前使用graphviz / dot来生成图表 – 到目前为止一切都很好。 图表非常大。 现在我正在寻找一个工具,它允许我创建“交互式”图形,我可以点击一个节点(一个业务服务),它将集中在视图中,所有的依赖项(其他节点)围绕它对齐。 有没有可以做到这一点的图书馆? 我已经看过“JUNG”并没有找到实现这一目标的例子。 期待您的回复 marcel ps:如果有非java工具我也会感兴趣

JFReeChart x轴刻度

我有一个JFree XY线图,总是从x = 0开始。然后根据属性文件中的用户定义设置,应用程序根据该数字递增(这表示以分钟为单位的时间) 例如,x = 0以启动用户定义的设置为5 – 因此比例变为0,5,10,15,20 ……或者用户设置为3,因此它变为0,3,6,9,12。 ….. 很简单。 我遇到的问题是图表的开始方式。 如果我从0开始,则0位于图形的中间而不是左下角的-0.0000005,-0.000004,-0.000003 ….. 0.000000,0.000001,0.000002 …… 0.000005 我怎样才能在底部手动添加比例,即定义它应该是2的增量然后它维持它? 谢谢你的时间

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

哪个开源Java图形绘制框架用于具有以下要求的网络图? 该图表将少于1000个节点。 1)具有平行边缘 2)单个图中的有向和无向边 3)由图像表示的节点 4)用户与节点和边缘的交互 5)动态添加/删除节点和边缘 6)节点和边缘上的多个标记,用户可以关闭/打开不同的标记级别。 (比如在图层中绘图并关闭/在图层上) 7)不同的布局算法,以显示星形,环形,网状拓扑 我评估了JUNG和Prefuse。 这是我为每个要求找到的。 1)当JUNG支持时,Prefuse不能显示平行边缘。 可以预操作代码来显示平行边缘吗? 由于这涉及基本的数据级别更改,我相信通常的自定义呈现更改会更加困难。 2)我没有在prefuse和JUNG中找到任何对组合图(有向和无向边)的引用。 有没有人知道呢? 3)Prefuse和JUNG都很容易 4)prefeuse和JUNG再次为用户交互提供支持。 5)prefuse和JUNG都支持它。 重绘图表时每个框架如何执行? 我在另一篇文章中看到,prefuse在动态更新方面表现不佳( Prefuse Toolkit:动态添加节点和边缘 ) 6)这归结为修改图形并重新绘制它。 所以问题变得与5)相同 7)JUNG和prefuse都有多种布局算法。 但是当我尝试在JUNG和Prefuse中使用FruchtermanReingoldLayout显示相同的数据集时,我会得到不同的显示。 有什么想法吗? Prefuse中的布局算法似乎显示出比JUNG更好的布局(我认为渲染也更好),尽管Prefuse中的大多数布局算法都基于JUNG实现。 PreFuse布局(如ForceDirectedLayout / FruchtermanReingoldLayout和CircleLayout)直接映射到星形,圆形,网格拓扑。 在这些要求之外,prefuse对表达式和查询语言有很好的支持,但看起来它不像JUNG那样积极开发。 哪一个有更好的可视化? 关于哪一个适合以及如何克服缺点的任何建议? 我可以使用其他任何框架吗?

JFreeChart格式Y轴显示Power中的值

如何格式化y轴显示值为5 * 10 ^ 5,1 * 10 ^ 6,2 * 10 ^ 6 …而不是500,000,1,000,000,2,000,000 ……并且可以被5或10整除?

图表表示基准

目前我正在开发一个程序,解决(如果可能的话)任何给定的迷宫尺寸从3X4到26×30。 我使用adj矩阵(稀疏)和adj列表来表示图形。 我想知道如何输出DFS使用一个然后另一个方法找到解决方案所花费的总时间。 以编程方式,我怎么能产生这样的基准?

宽度格雷姆林中的第一个枚举

我正在尝试使用Gremlin进行广泛的首次枚举,但是我无法找到输出枚举期间观察到的所有步骤的方法。 我只能打印出最后一次迭代的结果。 我的问题是,给定这样的起始节点,我如何使用Gremlin跟踪所有路径(不知道整体深度)并打印出我沿途找到的所有内容? study=gv(‘myId’) 我已经尝试过分散方法,循环方法(尽管如果我理解正确,两者似乎都需要事先知道路径的实际长度) 非常感谢!

Java中的邻接矩阵

我对图表和邻接矩阵感到困惑。 我正在为一个类做一个任务,我有一个节点的文本文件和一个边缘的文本文件,我必须阅读它们中的每一个并使它们成为一个图形,我可以在其上执行操作,例如确定图形是否为连接,找到最小的生成树,遍历和查找路径。 我之前从未使用过图表,而且我对整个事情感到困惑,我想知道是否有人可以帮我解释一下。 首先,我自己构建一个图形(可能是节点和边类?)然后从中构造一个邻接矩阵? 或者邻接矩阵本身就是图形? 然后我对如何在程序中实现相邻矩阵感到困惑。 节点的名称是“ND5”和“NR7”,所以我必须设置和读取[ND5] [NR7]的边缘,但我不知道如何设置像这样的2d数组的字符串外面和里面的数字。 我一直在互联网上搜索并阅读我教科书中关于图表的整章,我真的不明白设置这个图表的第一步基本步骤。 我非常感谢你的帮助。 谢谢。

Java中的实时图形

我有一个应用程序,每秒更新一次变量大约5至50次,我正在寻找一种实时绘制这种变化的连续XY图的方法。 虽然不建议将JFreeChart用于如此高的更新率,但许多用户仍然认为它适用于它们。 我尝试过使用这个演示并修改它以显示一个随机变量,但它似乎总是耗尽100%的CPU使用率。 即使我忽略了这一点,我也不希望被限制在JFreeChart的ui类来构造表单(虽然我不确定它的function是什么)。 是否可以将其与Java的“表单”和下拉菜单集成? (如VB中所示)否则,我有什么其他选择吗? 编辑:我是Swing的新手,所以我把一个代码放在一起只是为了测试JFreeChart的function(同时避免使用JFree的ApplicationFrame类,因为我不确定它如何适用于Swing的组合盒子和按钮)。 现在,图表正在立即更新,CPU使用率很高。 是否可以使用新的Millisecond()缓冲该值并将其更新为每秒两次? 另外,我可以在不中断JFreeChart的情况下将其他组件添加到JFrame的其余部分吗? 我该怎么办? frame.getContentPane()。add(new Button(“Click”))似乎覆盖了图形。 package graphtest; import java.util.Random; import javax.swing.JFrame; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.data.time.Millisecond; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; public class Main { static TimeSeries ts = new TimeSeries(“data”, Millisecond.class); public static void main(String[] args) throws InterruptedException { gen […]