`
ljjclub
  • 浏览: 35784 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

弃jung,换prefuse

阅读更多
prefuse比jung效果好点。于是,研究几天的jung放弃,用prefuse,有经验的同志帮帮忙!有没有实例。。
prefuse是一个用户界面工具包,能够帮助建立互动性强的信息可视化应用程序。

Prefuse提供设备,数据管理,空间布局,颜色,大小和形状编码,渲染,缩放,动画,搜索和互动。此外,它会尝试这样做了模块化的方式,使用户能够拼凑所需功能,以建立自定义的可视化应用。
   public static final String driverName   = "com.microsoft.jdbc.sqlserver.SQLServerDriver";       
       public static final String dbURL        = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Mypaper";       
       public static final String userName     = "sa";       
       public static final String userPwd      = "123456";       
       private Graph graph=null;  //将可视化化需要的数据读入prefuse内部的数据结构,此例选择的是内部的graph结构
 
DatabaseDataSource datasrc = null;     
DatabaseDataSource datasrc = null;     
      //create a table of data  
      try
      { 
       datasrc = ConnectionFactory.getDatabaseConnection(       
                     driverName, dbURL, userName, userPwd);   
      
      } catch (SQLException e) {
           // There was an error connecting to the database
           e.printStackTrace();
           return;
       } catch (ClassNotFoundException e) {
           // The database driver class was not found
           e.printStackTrace();
           return;
       }
         try
      {
        Table nodes = datasrc.getData("select * from test_node");    
      
        Table edges = datasrc.getData("select * from test_edge");   
        Graph graph = new Graph(nodes, edges, false,"id", "sid1", "tid");   
        
        //创建一个可视化图的抽象概念(内部存储的数据结构)
        //此结构包括原始数据域和新的可视化信息,如:x,y坐标,颜色,大小 
        Visualization vis = new Visualization();    
        vis.add("graph", graph);     
        
        System.out.println("3");
      //render和render工厂,用来传递数据
        LabelRenderer r = new LabelRenderer("name");  //使用name来创建带有标签的节点
     
        r.setRoundedCorner(8, 8);       
        vis.setRendererFactory(new DefaultRendererFactory(r));    //决定图形怎么画的主要工具
   
        //数据处理动作,高于前面的visualization处理 
        int[] palette = new int[] {       
                ColorLib.rgb(255,180,180), ColorLib.rgb(190,190,255)       
        };       
               
        DataColorAction fill = new DataColorAction("graph.nodes", "gender",       
                Constants.NOMINAL, VisualItem.FILLCOLOR, palette);       
        ColorAction textColor = new ColorAction("graph.nodes",       
                VisualItem.TEXTCOLOR, ColorLib.gray(0));       
        ColorAction edgesColor = new ColorAction("graph.edges",       
                VisualItem.STROKECOLOR, ColorLib.gray(200));       
               
        ActionList color = new ActionList();     //用来将前面的数据处理动作集合在一起
  
        color.add(fill);       
        color.add(textColor);       
        color.add(edgesColor);       
               
        ActionList layout = new ActionList(Activity.INFINITY);       
        layout.add(new ForceDirectedLayout("graph"));       
        layout.add(new RepaintAction());       
               
        vis.putAction("color", color);       
        vis.putAction("layout", layout);  
        
      //显示和交互控制 
        Display d = new Display(vis);    //显示可视化数据 
        d.setSize(250, 300);       
        d.addControlListener(new DragControl());       
        d.addControlListener(new PanControl());       
        d.addControlListener(new ZoomControl());       
        d.addControlListener(new NeighborHighlightControl());       
    //显示出可视化效果
        JFrame frame = new JFrame("Prefuse");       
           
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
//      frame.setSize(800, 600);       
        frame.add(d);       
//      frame.setVisible(true);       
        int width = 300;   
        int height = 400;   
        //获得容器   
        Container container = frame.getContentPane();   
        vis.run("color");       
        vis.run("layout");     
        shell.setSize(new Point(width, height));   
        shell.setLayout(new FillLayout());   
        shell.setText("Prefuse in SWT");   
        // 新建swt组件   
        Composite composite = new Composite(shell, SWT.NO_BACKGROUND   
                | SWT.EMBEDDED);   
        // 注入组件,并返回为frame   
        Frame frm = SWT_AWT.new_Frame(composite);   
        // 加载容器   
        frm.add(container);    
        // 打开shell   
        shell.open();  
    } catch ( DataIOException e) {
        // something went wrong :{
        e.printStackTrace();
        return;
    }
分享到:
评论

相关推荐

    prefuse-beta版工具包

    4. **库依赖**:Prefuse可能依赖于其他Java库,比如Jung(Java Universal Network/Graph Framework)或者Swing库,以实现特定的可视化效果或交互功能。 5. **构建脚本**:如Ant或Maven的配置文件,用于构建和打包...

    prefuse.flare

    prefuse是一个非常不错的开源可视化项目,尤其是用在social network/complex network上,个人感觉要比jung好。不过可惜的是,prefuse的user manual还在建设中,并且google resource也少得可怜。好在开源提供了源码,...

    正在分析社交网络数据

    Java库JUNG(Java Universal Network/Graph Framework)可以帮助我们构建和操作这些图形数据结构。我们可以利用它来计算度中心性、接近中心性、介数中心性等网络特征,理解网络的结构和用户的重要性。 另一个关键...

    少儿编程scratch项目源代码文件案例素材-绝地求生.zip

    少儿编程scratch项目源代码文件案例素材-绝地求生.zip

    嵌入式八股文面试题库资料知识宝典-文思创新面试题2010-04-08.zip

    嵌入式八股文面试题库资料知识宝典-文思创新面试题2010-04-08.zip

    一种基于剪切波和特征信息检测的太阳斑点图融合算法.pdf

    一种基于剪切波和特征信息检测的太阳斑点图融合算法.pdf

    并联型APF有源电力滤波器Matlab Simulink仿真:dq与αβ坐标系下的谐波无功检测与PI控制及SVPWM调制

    内容概要:本文详细介绍了并联型有源电力滤波器(APF)在Matlab/Simulink环境下的仿真研究。主要内容涵盖三个关键技术点:一是dq与αβ坐标系下的谐波和无功检测,利用dq变换和FBD技术实现实时检测;二是两相旋转坐标系(dq)与两相静止坐标系(αβ)下的PI控制,通过调整比例和积分环节实现精准控制;三是SVPWM调制方式的应用,通过优化开关时序提升系统效率和性能。文中还提供了详细的仿真介绍文档,包括模型搭建、参数设定以及结果分析。 适合人群:从事电力电子、自动化控制领域的研究人员和技术人员,尤其是对电力滤波器仿真感兴趣的读者。 使用场景及目标:适用于需要深入了解并联型APF工作原理和实现方式的研究人员,旨在通过仿真工具掌握谐波和无功检测、PI控制及SVPWM调制的具体应用。 其他说明:本文不仅提供了理论知识,还结合了实际操作步骤,使读者能够通过仿真模型加深对APF的理解。

    Arduino KEY实验例程【正点原子ESP32S3】

    Arduino KEY实验例程,开发板:正点原子EPS32S3,本人主页有详细实验说明可供参考。

    嵌入式八股文面试题库资料知识宝典-嵌入式C语言面试题汇总(66页带答案).zip

    嵌入式八股文面试题库资料知识宝典-嵌入式C语言面试题汇总(66页带答案).zip

    .archivetempdebug.zip

    .archivetempdebug.zip

    嵌入式系统开发_CH551单片机_USB_HID复合设备模拟_基于CH551单片机的USB键盘鼠标复合设备模拟器项目_用于通过CH551微控制器模拟USB键盘和鼠标输入设备_实现硬.zip

    嵌入式系统开发_CH551单片机_USB_HID复合设备模拟_基于CH551单片机的USB键盘鼠标复合设备模拟器项目_用于通过CH551微控制器模拟USB键盘和鼠标输入设备_实现硬

    少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip

    少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip

    少儿编程scratch项目源代码文件案例素材-火影.zip

    少儿编程scratch项目源代码文件案例素材-火影.zip

    两极式单相光伏并网系统的Boost电路与桥式逆变仿真及优化方法

    内容概要:本文详细介绍了两极式单相光伏并网系统的组成及其仿真优化方法。前级采用Boost电路结合扰动观察法(P&O)进行最大功率点跟踪(MPPT),将光伏板输出电压提升至并网所需水平;后级利用全桥逆变加L型滤波以及电压外环电流内环控制,确保并网电流与电网电压同频同相,实现高效稳定的并网传输。文中还提供了具体的仿真技巧,如开关频率设置、L滤波参数计算和并网瞬间软启动等,最终实现了98.2%的系统效率和低于0.39%的总谐波失真率(THD)。 适合人群:从事光伏并网系统研究、设计和开发的技术人员,特别是对Boost电路、MPPT算法、逆变技术和双环控制系统感兴趣的工程师。 使用场景及目标:适用于希望深入了解两极式单相光伏并网系统的工作原理和技术细节的研究人员和工程师。目标是在实际项目中应用这些理论和技术,提高光伏并网系统的效率和稳定性。 其他说明:文中提供的仿真技巧和伪代码有助于读者更好地理解和实现相关算法,在实践中不断优化系统性能。同时,注意电网电压跌落时快速切换到孤岛模式的需求,确保系统的安全性和可靠性。

    昭通乡镇边界,矢量边界,shp格式

    矢量边界,行政区域边界,精确到乡镇街道,可直接导入arcgis使用

    嵌入式八股文面试题库资料知识宝典-嵌入式c面试.zip

    嵌入式八股文面试题库资料知识宝典-嵌入式c面试.zip

    嵌入式八股文面试题库资料知识宝典-I2C总线.zip

    嵌入式八股文面试题库资料知识宝典-I2C总线.zip

    岩土工程中随机裂隙网络注浆模型及其应用:不同压力下注浆效果的研究

    内容概要:本文详细介绍了三种注浆模型——随机裂隙网络注浆模型、基于两相达西定律的注浆模型、基于层流和水平集的注浆扩散模型。首先,随机裂隙网络注浆模型基于地质学原理,模拟裂隙网络发育的实际地质情况,在不同注浆压力下进行注浆作业,以增强地基稳定性和提高承载能力。其次,基于两相达西定律的注浆模型利用数学公式模拟裂隙网络中的流体输送过程,适用于裂隙网络地质条件下的注浆效果分析。最后,基于层流和水平集的注浆扩散模型通过引入层流特性和水平集方法,更准确地模拟注浆过程中的扩散过程。文中还讨论了不同注浆压力对注浆效果的影响,并提出了优化建议。 适合人群:从事岩土工程、地基加固等相关领域的工程师和技术人员。 使用场景及目标:①帮助工程师选择合适的注浆模型和注浆压力;②为实际工程项目提供理论支持和技术指导;③提升地基加固的效果和效率。 其他说明:文章强调了在实际应用中需要结合地质条件、裂隙网络特点等因素进行综合分析,以达到最佳注浆效果。同时,鼓励不断创新注浆工艺和方法,以满足日益增长的地基加固需求。

    COMSOL Multiphysics 5.5与6.0版本Ar棒板粗通道流注放电仿真的电子特性分析

    内容概要:本文详细比较了COMSOL Multiphysics软件5.5和6.0版本在模拟Ar棒板粗通道流注放电现象方面的异同。重点探讨了不同版本在处理电子密度、电子温度、电场强度以及三维视图等方面的优缺点。文中不仅介绍了各版本特有的操作方式和技术特点,还提供了具体的代码实例来展示如何进行精确的仿真设置。此外,文章还讨论了网格划分、三维数据提取和电场强度后处理等方面的技术难点及其解决方案。 适合人群:从事等离子体物理研究的专业人士,尤其是熟悉COMSOL Multiphysics软件并希望深入了解其最新特性的研究人员。 使用场景及目标:帮助用户选择合适的COMSOL版本进行高效、精确的等离子体仿真研究,特别是在处理复杂的Ar棒板粗通道流注放电现象时提供指导。 其他说明:文章强调了在实际应用中,选择COMSOL版本不仅要考虑便捷性和视觉效果,还需兼顾仿真精度和可控性。

    嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_8.doc.zip

    嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_8.doc.zip

Global site tag (gtag.js) - Google Analytics