例如网络管理、人际关系网络、思维脑图、地理导航以及多种游戏等,在本质上都是对“图”的计算;JUNG就是专为图(Graph)的计算和可视化提供的一个通用的可扩充的Java编程平台。
只找到一个API在线地址:
http://jung.sourceforge.net/doc/api/
JUNG(Java Universal Network/Graph framework)是一个Java开源项目,其目的在于为开发关于图或网络结构的应用程序提供一个易用、通用的基础架构。使用JUNG功能调用,可以方便的构造图或网络的数据结构,应用经典算法(如聚类、最短路径,最大流量等),编写和测试用户自己的算法,以及可视化的显示数据的网络图。
package test;
import java.awt.*;
import javax.swing.*;
import org.apache.commons.collections15.Transformer;
//http://faithlee.iteye.com/blog/1420065
import edu.uci.ics.jung.graph.*;
import edu.uci.ics.jung.graph.util.EdgeType;
import edu.uci.ics.jung.algorithms.layout.*;
import edu.uci.ics.jung.visualization.BasicVisualizationServer;
import edu.uci.ics.jung.visualization.VisualizationViewer;
import edu.uci.ics.jung.visualization.control.DefaultModalGraphMouse;
import edu.uci.ics.jung.visualization.control.ModalGraphMouse.Mode;
import edu.uci.ics.jung.visualization.decorators.ToStringLabeller;
public class Test1To5 extends JFrame {
@SuppressWarnings("unchecked")
public Test1To5() {
this.setTitle("示例");
this.setFont(new Font("Times New Roman", Font.PLAIN, 12));
this.setBackground(Color.white);// 设置窗口背景颜色
// 初始化图g
SparseGraph g = new SparseGraph();
for (int i = 1; i < 10; i++) {
g.addVertex(i);
g.addEdge("Edge[1," + (i + 1) + "]", 1, i + 1);
if (i > 1) {
g.addEdge("Edge[" + i + "," + (i + 1) + "]", i, i + 1);
}
}
//http://faithlee.iteye.com/blog/1420065
System.out.println("The graph g = " + g.toString());
// 使用该图创建布局对象
// Layout layout = new CircleLayout(g);//圆形布局结构
Layout layout = new FRLayout2(g);
// 使用布局对象创建BasicVisualizationServer对象
// BasicVisualizationServer vv = new BasicVisualizationServer(layout);
VisualizationViewer<Integer, Paint> vv = new VisualizationViewer<Integer, Paint>(
layout);
// 渲染环境 颜色参数
Transformer<Integer, Paint> vertexPaint = new Transformer<Integer, Paint>() {
public Paint transform(Integer s) {
if (s == 1)
return Color.green;
else
return Color.YELLOW;
}
};
// 设置顶点文本标签
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());
// 设置顶点颜色
// vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint);
// 设置边的文本标签
vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller());
// 设置边的线型
// vv.getRenderContext().setEdgeStrokeTransformer();
DefaultModalGraphMouse<Integer, Paint> gm = new DefaultModalGraphMouse<Integer, Paint>();
gm.setMode(Mode.PICKING);
vv.setGraphMouse(gm);
// 将上述对象放置在一个Swing容器中并显示之
getContentPane().add(vv);
pack();
}
public static void main(String[] args) {
Test1To5 myframe = new Test1To5();
myframe.setExtendedState(JFrame.MAXIMIZED_BOTH);
myframe.setVisible(true);
}
}
[img][/img]
JUNG对图、树、森林等数据结构的计算和可视化提供了完整的基础支持,大大的提高相关应用软件的实现进度;同时JUNG在图树算法、交互支持、可视化布局等方面有着强大功能,不足的地方是,其API的文档不够齐全,有些内容甚至严重过期,因此需要参考其源码(可以在Source Forge下载)进行工作。
http://jung.sourceforge.net/applet/index.html中更有多个内容丰富的样例可供参考;
分享到:
相关推荐
拓扑开源控件jung源码实现。。。。。。拓扑开源控件jung源码实现
jung2-alpha2源代码
jung中文教程(read me first) jung jar包 jung API帮助文档 jung示例源码 源码内容包括: 1.创建图的数据结构 2.图的可视化表现 3.网络图的修饰 4.自定义顶点、边的数据类型 5.从文件中读入图 6.关于图...
jung API 帮助文档
JUNG:Java平台网络/图应用开发所应用到的所有jar包
JUNG教程,讲解JUNG开发的一些技术要点
JUNG 网络/图 编程 入门教程: “JUNG - Java平台网络图应用开发的一种通用基础架构.doc” 的源码。 包中还包含测试数据。
java的复杂网络作图工具包JUNG简明教程
jung中文教程(read me first) jung jar包 jung示例源码 源码内容包括: 1.创建图的数据结构 2.图的可视化表现 3.网络图的修饰 4.自定义顶点、边的数据类型 5.从文件中读入图 6.关于图的应用算法 7.可视化人机...
java的复杂网络作图工具包JUNG简明教程,Java Universal Network/Graph Framework,提供有向图,无向图,混合网络,以及各种展现接口,只要不是绘制特别巨大的图,效果可以。
开源项目-jung-kurt-gofpdf.zip,Gofpdf: Generate PDFs from Go with No Dependencies
Tutorial for JUNG2 it is a software used for SNA
jung-algorithms-201-modified-sources:进行了一些小修改的jung-algorithms-2.0.1项目的源代码
Java开源网络分析工具,功能强大,算法齐全,可视化支持良好
matlab直扩代码ncomms_2021_Jung 代码与手稿(Jung等人)相关。 “在抗原识别之前从T细胞微绒毛的尖端预先排除CD45” 系统要求 MATLAB提供的脚本使用Matlab(),版本:'9.4.0.813654(R2018a)。 不需要其他工具箱...
jung
结合帧间差分信息和Jung背景提取算法,提出了一种改进的用于运动目标检测的实时背景提取算法。该算法利用视频连续图像帧之间的差异信息加速背景更新过程,提取的背景图像能够快速适应背景中物体的变化,同时保留了...
atlas-driver-jung-0.7.0.jar