birdeye 绘制拓扑关系图

来源:互联网 发布:我知女人心小说杜漫宁 编辑:程序博客网 时间:2024/03/29 05:02
 

birdeye 绘制拓扑关系图

birdeye概述

BirdEye是一个开源的Adobe Flex图表制作组件。用于创建多维数据分析可视化界面。

birdeye 可以绘制 拓扑图,关系图,流程图,星空图,地图,饼图 等等..

birdeye 项目地址:http://code.google.com/p/birdeye/

birdeye 源码下载:http://code.google.com/p/birdeye/source/checkout  需要用SVN.

birdeye Demo:http://birdeye.googlecode.com/svn/branches/ng/examples/demo/BirdEyeExplorer.html

birdeye  svn源码地址:

svn checkout http://birdeye.googlecode.com/svn/trunk/ birdeye-read-only

checkout 大约几分钟的时间 下载下来的源码如下

每个文件夹里面对应了一类图形. 导入的项目可能会报错,注意查看每个文件夹下的lib目录下的swc文件 引入即可。

ravis 下是拓扑图

导入工程后,运行Level4.mxml

birdeyeravis 传递数据的方式也是通过xml

xml结构如下:

节点

<Node id="1" name="0" desc="This is a description" nodeColor="0x333333" nodeSize="32" nodeClass="earth" nodeIcon="center" x="10" y="10" />

name-就是显示名, desc-是描述,可以不显示. nodeColot -是节点颜色. nodeSize-节点大小.  nodeClass-节点样式, nodeIcon-不清楚属性,

连接的关系xml

<Edge fromID="1" toID="2" edgeLabel="No Change" flow="50" color="0x556b2f" edgeClass="sun" edgeIcon="NoChange" />

fromID toID就不用说了,edgeLabel-线上的显示名  color -线的颜色, edgeClass-线的样式

xml和SpringGraph绘制拓扑图的xml结构有点相似吧…

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                xmlns:ravis="org.un.cava.birdeye.ravis.graphLayout.visual.*"
                xmlns:lc="org.un.cava.birdeye.ravis.components.ui.controls.layouterControls.*"
                xmlns:vc="org.un.cava.birdeye.ravis.components.ui.controls.vgraphControls.*"
                xmlns:flexlib="http://code.google.com/p/flexlib/"
                creationComplete="init();" width="100%" height="100%" >

    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
           
            import org.un.cava.birdeye.ravis.components.ui.controls.layouterControls.LayoutSelector;
            import org.un.cava.birdeye.ravis.components.ui.controls.layouterControls.PhiDial;
            import org.un.cava.birdeye.ravis.components.ui.controls.vgraphControls.EdgeRendererSelector;
            import org.un.cava.birdeye.ravis.graphLayout.data.Graph;
            import org.un.cava.birdeye.ravis.graphLayout.data.IGraph;
            import org.un.cava.birdeye.ravis.graphLayout.layout.ConcentricRadialLayouter;
            import org.un.cava.birdeye.ravis.graphLayout.layout.IAngularLayouter;
            import org.un.cava.birdeye.ravis.graphLayout.layout.ILayoutAlgorithm;
            import org.un.cava.birdeye.ravis.graphLayout.layout.ParentCenteredRadialLayouter;
            import org.un.cava.birdeye.ravis.graphLayout.visual.IEdgeRenderer;
            import org.un.cava.birdeye.ravis.graphLayout.visual.IVisualNode;
            import org.un.cava.birdeye.ravis.graphLayout.visual.VisualGraph;
            import org.un.cava.birdeye.ravis.graphLayout.visual.edgeRenderers.DirectedBalloonEdgeRenderer;
           
            import renderers.edgelabels.mxml.basicEdgeLabelRenderer;
           
            private var graph:IGraph;
            private var layouter:IAngularLayouter;
            private var selectedEdgeRenderer:IEdgeRenderer;
            private var startRoot:IVisualNode;
            private var itemCount:int = 0;
            private var initDone:Boolean = false;
           

            private function init():void{
                var strXML:String =
                      "<graph>" +
                "<Node id=\"1\" name=\"\" nodeColor=\"0xaf3a99\" nodeSize=\"0\" nodeIcon=\"center\" />" + 
                    "<Node id=\"2\" name=\"B60R\" nodeColor=\"0xaf3a42\" nodeSize=\"50\" />" + 
                    "<Node id=\"3\" name=\"H01L\" nodeColor=\"0xaf3a42\" nodeSize=\"50\" />" + 
                    "<Node id=\"4\" name=\"B24B\" nodeColor=\"0xaf3a42\" nodeSize=\"50\" />" + 
                    "<Node id=\"5\" name=\"H01M\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"6\" name=\"B25J\" nodeColor=\"0xaf3a42\" nodeSize=\"40\" />" + 
                    "<Node id=\"7\" name=\"G05B\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"8\" name=\"H04L\" nodeColor=\"0xaf3a42\" nodeSize=\"40\" />" + 
                    "<Node id=\"9\" name=\"H01R\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"10\" name=\"G05G\" nodeColor=\"0xaf3a42\" nodeSize=\"40\" />" + 
                    "<Node id=\"11\" name=\"H05K\" nodeColor=\"0xaf3a42\" nodeSize=\"40\" />" + 
                    "<Node id=\"12\" name=\"H01H\" nodeColor=\"0xaf3a42\" nodeSize=\"40\" />" + 
                    "<Node id=\"13\" name=\"H03H\" nodeColor=\"0xaf3a42\" nodeSize=\"40\" />" + 
                    "<Node id=\"14\" name=\"G06F\" nodeColor=\"0xaf3a42\" nodeSize=\"40\" />" + 
                    "<Node id=\"15\" name=\"H04Q\" nodeColor=\"0xaf3a42\" nodeSize=\"40\" />" + 
                    "<Node id=\"16\" name=\"A63B\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"17\" name=\"G06T\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"18\" name=\"E05B\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"19\" name=\"G01N\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"20\" name=\"F02B\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"21\" name=\"F04C\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"22\" name=\"B23C\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"23\" name=\"H04B\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"24\" name=\"B62D\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Node id=\"25\" name=\"H02K\" nodeColor=\"0xaf3a42\" nodeSize=\"30\" />" + 
                    "<Edge fromID=\"1\" toID=\"2\" edgeLabel=\"\" color=\"0xFFFFFF\" />" + 
                    "<Edge fromID=\"2\" toID=\"3\" edgeLabel=\"1228\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"4\" toID=\"3\" edgeLabel=\"589\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"4\" toID=\"5\" edgeLabel=\"233\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"4\" toID=\"6\" edgeLabel=\"216\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"6\" toID=\"7\" edgeLabel=\"294\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"6\" toID=\"8\" edgeLabel=\"211\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"2\" toID=\"8\" edgeLabel=\"553\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"3\" toID=\"9\" edgeLabel=\"244\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"1\" toID=\"10\" edgeLabel=\"\" color=\"0xFFFFFF\" />" + 
                    "<Edge fromID=\"10\" toID=\"11\" edgeLabel=\"701\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"1\" toID=\"12\" edgeLabel=\"\" color=\"0xFFFFFF\" />" + 
                    "<Edge fromID=\"12\" toID=\"13\" edgeLabel=\"523\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"1\" toID=\"14\" edgeLabel=\"\" color=\"0xFFFFFF\" />" + 
                    "<Edge fromID=\"14\" toID=\"15\" edgeLabel=\"522\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"1\" toID=\"16\" edgeLabel=\"\" color=\"0xFFFFFF\" />" + 
                    "<Edge fromID=\"16\" toID=\"17\" edgeLabel=\"402\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"1\" toID=\"18\" edgeLabel=\"\" color=\"0xFFFFFF\" />" + 
                    "<Edge fromID=\"18\" toID=\"19\" edgeLabel=\"350\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"1\" toID=\"20\" edgeLabel=\"\" color=\"0xFFFFFF\" />" + 
                    "<Edge fromID=\"20\" toID=\"21\" edgeLabel=\"304\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"1\" toID=\"22\" edgeLabel=\"\" color=\"0xFFFFFF\" />" + 
                    "<Edge fromID=\"22\" toID=\"23\" edgeLabel=\"300\" color=\"0x556b2f\" />" + 
                    "<Edge fromID=\"1\" toID=\"24\" edgeLabel=\"\" color=\"0xFFFFFF\" />" + 
                    "<Edge fromID=\"24\" toID=\"25\" edgeLabel=\"298\" color=\"0x556b2f\" />" + 
                    "</graph>"       
                initData(strXML);
//                //nodeSize 球的大小, nodeColor 节点的颜色  edgeLabel=线上的描述
           
               
                ExternalInterface.addCallback("GetXMLFunction",initData);
            }
           
            private function initData(strXML:String):void {
               
                var xmldata:XML = new XML(strXML);
               
                graph = new org.un.cava.birdeye.ravis.graphLayout.data.Graph("XMLAsDocsGraph",false,xmldata);
               
                vgraph.graph = graph;
               
                layouter = new ParentCenteredRadialLayouter(vgraph);
                vgraph.layouter = layouter;

                layouter.autoFitEnabled = false;
                //layouter.linkLength = 300;
                //layouter.phi = 300;
                //layouter.layoutChanged = true;
               
                vgraph.edgeRendererFactory = new ClassFactory(DirectedBalloonEdgeRenderer);
               
                vgraph.maxVisibleDistance = 5;
               
                //指定根节点
                startRoot = graph.nodeByStringId("1").vnode;
               
                vgraph.displayEdgeLabels = true;
               
                vgraph.currentRootVNode = startRoot;
                initDone = true;
               
               
                //线条样式
                var myEdgeRender:EdgeRendererSelector = new EdgeRendererSelector();
                myEdgeRender.selectedItem = "Default";
                myEdgeRender.vgraph  = vgraph;
                myEdgeRender.changeEdgeRenderer();
               
                var selector:LayoutSelector = new LayoutSelector();
                selector.vgraph = vgraph;
                selector.selectedItem = "ConcentricRadial";
                selector.changeLayouter();
               
                vgraph.draw();
            }
        ]]>
    </mx:Script>                   
   
    <mx:Style source="styles/main.css" />
        <mx:Canvas id="graphCnvs" width="100%" height="100%"  >       
            <ravis:VisualGraph id="vgraph" width="100%" height="100%"
                               left="0" right="0" top="0" bottom="5"
                               backgroundColor="#FFFFFF" alpha="1"
                               itemRenderer="renderers.nodes.mxml.sizeColorNodeRenderer"
                               edgeLabelRenderer="renderers.edgelabels.mxml.basicEdgeLabelRenderer"
                               resize="vgraph.draw(VisualGraph.DF_RESET_LL)"
                               visibilityLimitActive="true"
                               >
            </ravis:VisualGraph>
           
            <flexlib:WindowShade
                id="layoutContainer"
                styleName="linkButtonWindowShade"
                label="设置"
                width="400"
                opened="false"
                horizontalAlign="center"
                paddingBottom="5"
                 visible="false">
                                  
                    <lc:PhiDial id="myPhiDial" vgraph="{vgraph}" />
                    <lc:ToggleDamping id="myDamping" vgraph="{vgraph}" />
                    <lc:CommonLayoutControls id="myCommonLC" vgraph="{vgraph}" />
               
            </flexlib:WindowShade>

        </mx:Canvas>
   
</mx:Application>

效果如下:

线的长度只有通过控件才能设置,我是通过修改源码来达到固定的。

birdeye 与SpringGraph的一点区别在于 不会随意飘动,并且效果还不错。如果不想看到他的双击事件也可以通过修改源码实现.

 

http://www.cnblogs.com/xiaogangqq123/archive/2011/06/03/2070673.html

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 地税财务报表上传错误怎么办? 平安体检卡过期怎么办 到医院挂号后怎么办 一吹风就头痛怎么办 平安口袋e怎么办离职 学员学分卡号怎么办 华医网注册错了怎么办 医师继续教育学分不够怎么办 执业医师学分卡怎么办 护士学分5年没办怎么办 华医网职称录入错误怎么办 在北京没有学历怎么办 继续教育证书丢了怎么办 继续教育证丢了怎么办 继续教育档案丢了怎么办 现在会计证丢了怎么办 初级准考证丢了怎么办 协助调查48小时怎么办 有个抑郁症父亲怎么办 法院不给立案怎么办 眼睛发炎有眼屎怎么办 外伤后眼白出血怎么办 斜视手术失败了怎么办 角膜划伤恢复慢怎么办 机场海关扣行李怎么办 被消防参谋恐吓怎么办 公安局贴的封条怎么办 公司倒闭后诉讼怎么办 股东不配合清算怎么办 消防罚款不交怎么办 武警撤勤海关怎么办 包包掉出租车上怎么办 打市长热线不管怎么办 科目三不好预约怎么办 车辆年检过了怎么办 汽车车检过期了怎么办 离职怎么办苏州市民卡 市民卡密码锁了怎么办 网约车手续怎么办 在苏州被骗了怎么办 西安市水利工程安全员证怎么办