prefuse是一个用户界面包用来把有结构与无结构数据以具有交互性的可视化图形展示出来.这包括的数据有任何可以被描述成一组实体(或节点)或者可以被连接在一起的一些关系(或边缘).prefuse支持的数据包括具有层次性(如:文件系统,组织图),网络(网络拓扑,网站链接),和甚至是没有连接的数据集(如:时间线)
<o:p> </o:p>
以上是网上对prefuse的介绍,可是大家估计都看的不太懂。
总之,prefuse就是完成数据的展示的工具包。在prefuse提供的基础工具类上,可以轻松的完成复杂数据的表现。<o:p></o:p>
首先,先来三个例子,都是prefuse包中自带的demo.体验一下,prefuse在数据可示化展示的强大功能。<o:p></o:p>
第一个例子是Congress,它把数据结构为表的数据显示。它显示的文件在prefuse-beta\data\fec.txt.<o:p></o:p>
fec.txt文件中显示的是候选人的民意调查文件。每行数据就是一个显示单元。
运行时的切图如下:<o:p></o:p>
这个demo完成了以下的功能:<o:p></o:p>
1, 鼠标拖动右边的滚动条,可以把密集的数据按照显示区间分散。<o:p></o:p>
2, Party 为DEM显示为blue, Party 为REP显示为red,其佘的显示为灰色。<o:p></o:p>
3, District为>0时,显示为方框,=0时,显示为菱形。<o:p></o:p>
4, 横坐标显示为State Code,纵坐标显示为Total Receipts。<o:p></o:p>
5, Candidates框中输入查询内容a,所有Candidate列中,包含a的Candidate行数据显示。
6, 单选框中选中1996,只有Year=1996年的行数据显示。<o:p></o:p>
7, 鼠标放在某个数据上,右上角的标题出现本条数据的Candidate,Party Designation,State Code,Year,Total Receipts的连接显示<o:p></o:p>
如果这个程式是用flash写的估计大家也不会感到惊奇,但是java写的,300行搞定。会不会觉得很神奇呢?呵呵。首先java中有很多方方面面的资源,完成一个大型应用,比如olap,可以再进一步,利用prefuse可一步简单的数据可视化显示。<o:p></o:p>
<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><o:p></o:p>
第二个例子是RadialGraphView,它把数据结构为图的数据显示。它显示的文件在prefuse-beta\data\ socialnet.xml.<o:p></o:p>
socialnet.xml文件中显示的是社会网络关系文件。一个人就是一个结点,一个人可以和其它人有联系。<o:p></o:p>
第二个demo完成了以下的功能:<o:p></o:p>
1. 把数据以点连线的方式在画面中显示<o:p></o:p>
2. 鼠标放在某个数据上,有加亮显示<o:p></o:p>
3. 鼠标左键可以把图在画面中拖动<o:p></o:p>
4. 鼠标右键可以把图放大或者缩小<o:p></o:p>
5. 鼠标单击某个数据上,该数据点中心化显示(可以点击下试试就知道中心化显示)<o:p></o:p>
6. 鼠标可以选中某个数据点进行任意位置的拖动,而在该点与其它点的关系保持不变<o:p></o:p>
7. 在右下框输入a,则图中数据点中包含a的数据加亮显示<o:p></o:p>
这个文件也是300行左右完成的。<o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
第三个例子是TreeView,它把数据结构为树的数据显示。它显示的文件在prefuse-beta\data\ chi-ontology.xml.gz.这是一个压缩文件<o:p></o:p>
chi-ontology.xml文件中显示的树状结构,只有一个根结点,每父节点都有很多子节点<o:p></o:p>
第三个demo完成了以下的功能:<o:p></o:p>
1. 把数据以树连线的方式在画面中显示<o:p></o:p>
2. 鼠标放在某个数据上,左下角有该数据名称的显示<o:p></o:p>
3. 鼠标左键可以把图在画面中拖动<o:p></o:p>
4. 鼠标右键可以把图放大或者缩小<o:p></o:p>
5. 鼠标单击某个数据上,该数据点中心化显示,并且只显示譔结点以下两层子结点,兄弟结点只显示以下一层结点<o:p></o:p>
6. 在右下框输入a,则图中数据点中包含a的数据加亮显示<o:p></o:p>
7. 右键单击树的某结点在图中适当的尺寸来显示<o:p></o:p>
8. Ctrl 1~4以不同的方向来显示树<o:p></o:p>
这个文件仍然是300行左右完成的。<o:p></o:p>
<o:p> </o:p>
<o:p></o:p>
以上大家可以知道prefuse的强大功能。<o:p></o:p>
为什么要用prefuse来显示数据呢?大量的数据隐藏着知识,如果我们能把数据更丰富的显示出来,也许我们就能发现这些知识。我们可以把数据知识更好的说明问题。给领导看,倍有面子。
~~
图片不知道杂插入.