具体实施方式
下面,结合附图对本发明的实施例进行详细描述。
图4为根据本发明的实施例的可视化方法的效果图。如图4所示,根据本发明的实施例,可以将视图400分为两个区域:焦点区域410和子图区域420,设计来呈现层次化图结构数据的层级信息和图信息。其中焦点区域410可以位于视图中心,用来显示涉及层次化图结构数据的不同的信息,例如层级信息或者层级分支(branch)之间的关系或者节点信息,缺省设置为显示层次化图结构数据的细化到指定层级的多个节点以及这些节点之间的关系。在焦点区域410,利用同心圆环上的多个段分别表示该层次化图结构数据的细化到指定层级的多个节点,利用这多个段之间的连线表示细化到该指定层级的多个节点之间的关系。而子图区域420可以位于焦点区域410的外侧,用来显示该层级以下的节点及其之间的关系,其中与焦点区域410中的圆环的多个段的每一个相对应地,在该段外侧呈现对应的节点之下的子节点及其之间的关系。
本发明的实施例的层次化图结构数据可视化的方法可以应用于三维空间、二维平面或者双曲面。下面主要以三维空间为例来描述本发明的对诸如图3所示的公司组织结构的层次化图结构数据的可视化的方法的基本思想。
图5为根据本发明的实施例的可视化方法的流程图。如图5所示,在步骤S510,在焦点区域呈现层次化图结构数据的细化到一个指定层级的多个节点及其之间的关系。
在本发明的实施例中,首先将所确定的层次化图结构数据的数据结构在平面上来布局,例如在平面上采用等距离的圆环,将该层次化图结构数据的数据按照权重递减的顺序从内到外依次排列在所布局的位置上。该权重可以由用户任意指定,也可以根据图信息来计算,例如某节点到其它节点的连线有4条,则该节点的权重可以设置为4。然后将该平面映射到单位球体上,这样根据三维视图可以自动产生聚焦+上下文效应。如图5a所示,单位球体的可见半球上的节点、连线和区域位于该空间的前面,位于不可见半球上的那些将隐藏在该空间的后面,将可见半球的球面安排为具有凹面半球的表面510和其余的球面520,与当前层级对应的圆环位于凹面半球的最大圆环处,其对应的上一层级的圆环在凹面半球上依次向下排列,这样在映射得到的图4所示的可视化试图中,当前层级对应的圆环为激活的圆环,位于焦点区域410内的最外侧,同时在焦点区域410还可以呈现其上下文,即与上一层级的层级关系。如图5b所示,最后可以采用正交投影将该球体的可见半球(北半球)的表面上的每个点都投影在与该球体北极点相切的二维平面的单位圆上,以得到如图4所示的可视化视图,例如图4所示的焦点区域410与图5a所示的凹面半球的表面510映射,而子图区域420与球面520映射。在下面将详细说明该过程。
在本发明的实施例中,还可以采用双曲变换将该层次化图结构数据的可视化平面变换到双曲面上,最后再投影到XY基平面上而得到如图4所示的可视化视图。例如,采用双曲线鹏卡莱圆(the hyperbolic Poincaredisc)将二维平面上基于径向布局之类的方法已布局好的节点映射到双曲面上,鹏卡莱圆是双曲几何的模型,为定义为圆的具有双曲几何的二维空间,其中线代表尾端与鹏卡莱圆的边界垂直的圆线的弧。
通过上述处理,可以将需要的信息呈现在视图中心,将不需要的信息压缩到视图边缘或者使之在视图中不显示,从而既清楚直观呈现巨大层次化图结构数据的层级信息,还呈现了该层次化图结构数据的子图信息。
如图4所示,对于该层次化图结构数据的层级信息,可以应用具有层次结构的多个分段同心圆来表示。具体而言,最内层的圆环表示根节点,基于与根节点的远近关系各个圆环从内向外排列,例如节点1、2和3为根节点的子节点,则其所在的圆环就紧邻表示根节点的圆环,节点1的子节点为1.1和1.2,节点3的子节点为3.1和3.2,则其所在的圆环就排列在节点1、2和3所在的圆环之外。同时因为节点2为非叶节点,其在层级衍生过程中始终处于最外侧的圆环上,例如节点2与节点1.1、3.2、1.2.1、1.2.2、3.1.1和3.1.2位于最外侧的同一个圆环上。在本发明的实施例中,焦点区域410最外侧的圆环总是为激活的圆环。
该层次化图结构数据的细化到不同层级的节点用特定圆环上的某个分段来表示,具体而言,将特定层级的节点表示为激活的圆环上的某个分段,例如,节点2用其所在的分段来表示,类似地节点1.1也用其所在的分段来表示,在下文中将位于激活的圆环上的节点称为连接点。用连线将两个分段上的连接点连接起来,就表示细化到该层级的这两个节点相互关联,还可以使用不同粗细的连线来表示两者之间的关系的密切程度。从而在本发明的实施例中,既可以直观呈现相同层级的节点之间的关系,也可以直观呈现不同层级节点之间的关系,例如节点2与节点3.1.1之间关联。
下面来详细介绍如何在焦点区域410来布局层次化图结构数据,具体而言就是确定特定层级节点对应的圆环的半径Y以及该节点在圆环上的分段所占据的弧段扩展角(或边界角)以及建立圆环分段之间的关系。
首先,选择XY平面作为基平面;然后根据圆环上的每一个节点的相应权重w(n)或者子节点的数量来计算该弧段对应的扩展角度,根据层级来设置该圆环的半径Y,从而设置该节点对应的弧段的长度。
例如,布局层级的伪代码HLayout(root,0,2*PI,0)如下:
HLayout(P,start,extend,depth){
if the children count of P is 0{
Set P’s segment from“start”to“start+extend”
Set the Y coordinate of the segment according to the depth
}else{
For each child C of P
ext=extend*W(C)/W(P)
HLayout(C,start,ext,depth+1)
start=start+ext
}
}
在该示例中,根节点root对应的圆环的段应该是整个圆环,其扩展角度从0开始计算(即start=0),是2*PI(即2π),根节点对应的层级应该为0。在该计算扩展角度的过程中,采用递增迭代来调用HLayout程序,利用各节点的权重W(n)和对应的层级深度,来设置指定层级的节点对应的弧段的扩展角度和该弧段所在的圆环的半径Y。
其中,同心圆环的半径Y可以采用圆锥模型、半球模型或者二次曲线模型根据圆锥等式、半球等式或二次曲线等式来设置。例如,如图5d所示,根据下面的圆锥等式(1)来呈现结构圆环(即同心圆环):
而gi=μ·Hmax·(i/V)2 i=1,2,3...n...
其中,gi为i层级所在的圆截面Si与i-1层级所在的圆截面Si-1之间的间距;μ为控制间距g增加的常数因子,可以控制层级之间间距的大小,从而映射到焦点区域表现为同心圆环的疏密;Hmax为可视空间的最大高度;V为可视空间中的可视的层级的总数;ri为Si的半径;i0为可视层级圆锥中的可视圆截面集合的最底部的层级序列号;λ为可视层级的个数;以及rmin为可视层级圆锥中的底部圆环的半径。
在本实施例中,使用了递增迭代的方法来布局焦点区域,从而很容易扩展到动态布局。在下面介绍的动态改变层级过程中,在产生新的层级圆环时可以递增来计算,而不是从根层级开始做完整的迭代来计算。
下面,来详述建立不同节点之间的关系。图5c为节点之间关系的示意图。如图5c所示,叶子节点1.2.2和叶子节点3.1.2都包括若干子节点,这些子节点之间除了存在内部联系外还存在众多外部联系,例如子节点1.2.2.1与1.2.2.2有关系,1.2.2.1与3.1.2.3也有关系,等等。如果通过聚类处理将这些子节点之间的关系合并在一起,则形成了其父节点1.2.2与3.1.2之间的关系。同理,因为1.2.2与3.1.2有联系,因此其父节点1.2以及3.1之间也就存在间接关系。依此类推,节点1与节点2之间就存在相应的关系,该关系通过节点1所在的分段圆弧与节点2所在的分段圆弧之间的连线加以表示。连线的粗细与存在的关系的数目相关。例如,节点1.2.2与节点3.2.1之间关系的权重可以记为4,因为之间有四条连线。
接下来,在步骤S520,在子图区域呈现该层次化图结构数据的指定层级以下的节点及其之间的关系。具体而言,与焦点区域410中的激活的圆环的多个段中的每一个相对应地,在该段外侧(即子图区域420中)呈现对应的节点之下的所有子节点及其之间的关系(即该节点的子图),例如在节点2的子图区域呈现节点2的子图。
应该注意的是,在焦点区域410中布局层级信息时就已经计算了子图区域420。在子图区域布局指定层级以下的节点及其之间的关系可以采用很多算法,诸如径向布局(radial layout)、环形布局(circle layout)或者二次曲线布局(hyperbolic layout)。在三维空间选择单位球体作为布局的基本模型,如下所述可以根据节点的权重使用径向布局来呈现子图:
a)选择XY作为基平面。
b)根据各个节点的权重以权重递减的顺序来从距焦点区域410从近到远的顺序排列子图中的节点,即将重要的节点布局在紧邻焦点区域的内环上,在该圆环的外侧逐次布局不太重要的节点。
对于每个节点,计算在子图区域420中的坐标。例如,如果与该节点相映射的球体上的点的经度角
大于该子图区域对应的边界角,则令
将该节点移动到子图区域420中的下一个圆环,并使用球体公式来计算该点在球体上的坐标,从而得到对应的节点在子图区域的坐标,其原理与图5a和5b所示的原理类似,在此不再赘述。
在本发明的实施例中,还可以通过交互来动态呈现用户所需要的内容,例如层级信息、节点或者子图信息等。图6为根据本发明的另外的实施例的可视化方法的流程图。如图6所示,在步骤S610开始改变所述焦点区域中的指定的层级。该步骤通常由用户来触发,可以采用鼠标的滑动或者其它的方式来启动该过程。
接下来在步骤S620,清除焦点区域410和子图区域420中原来的布局,开始呈现第一层级的节点及其之间的关系,同时子图区域也发生相应地改变。如图7a所示,在焦点区域410呈现节点1、2和3的分段组成的激活的圆环,以及节点1、2和3之间的关系,在子图区域420分别呈现节点1、2和3的子图。
在步骤S630,根据用户的操作,继续改变层级,呈现第二层级的节点及其之间的关系,同时子图区域也发生相应地改变。如图7b所示,在焦点区域410呈现节点2、节点1的子节点1.1和1.2以及节点3的子节点3.1和3.2的分段组成的激活的圆环,以及各节点之间的关系,在子图区域420分别呈现它们的子图。
当然,用户可以继续操作,在此基础上继续改变层级,直至获得其所需要的信息。
改变层级并呈现具体的细节信息的过程具体如下:
对于第i级的第j个节点nodei,j,如果该层级为激活的层级,则检查该层级的每个节点,如果该节点包含子节点,则为结构节点,执行将该节点分解为子节点集的处理,即Si+1,j=<nodei+1,j|0<j<n>,其中n为子节点的个数,然后执行在焦点区域410的再次呈现。
否则执行Si+1,j={nodei,j},在焦点区域410再次呈现层次化图结构数据的信息。
在步骤S640,改变层级过程结束。
通过这种交互,用户既可以了解该层次化图结构数据的整体信息,还可以清楚看到各个层次节点之间的关联情况或者某一层级的具体信息。
在本发明的另外的实施例中,可以提供动态聚焦来方便用户获得子图中特定的节点或者特定子图的信息,还可以使用户容易获得关于子图之间或者节点之间关系的信息。图8为该可视化方法的流程图。如图8所示,在步骤S810,开始动态聚焦过程。该步骤通常由用户来触发,可以采用鼠标的滑动或者点击或者其它的方式来启动该过程。
接下来在步骤S820,根据用户的操作来选择动态聚焦的种类,可以在聚焦节点、聚焦子图和聚焦关系三者中选择一种。
如果用户希望获得子图中某个节点的信息,则用户可以启动聚焦节点的处理例如鼠标轻点该子图的节点。根据用户的操作在步骤S830a来进行聚焦节点的处理,具体如下:
●首先除去焦点区域410最外侧的圆环上的各节点之间的关系;
●然后可以通过平滑动画将用户选择的节点移动到焦点区域410的中心;
●扩展该节点以显示详细信息,例如该节点1.1.3为“Finley”,则可显示其照片等信息;
●最后呈现该节点与在激活的圆环分段上的连接点之间的关系。
如图9a所示,该节点“Finley”及其照片呈现在焦点区域410中,同时还呈现了该节点与其它节点的关系。
如果用户希望获得子图的信息,则可以启动聚焦子图的处理例如在对应的子图区域420连击两下。根据用户的操作在步骤S830b来进行聚焦子图的处理,具体如下:
●首先除去焦点区域410最外侧的圆环上的各节点之间的关系;
●然后使所选择的子图在子图区域逐渐消失,并且该子图对应的圆环分段也在焦点区域410消失,将空出的这些面积平滑的分给其它圆环分段和子图(根据权重或者子节点个数);
●然后在焦点区域410采用径向布局或者二次曲线布局等以权重减少的顺序来布局(layout)指定层级以下的节点及其之间的关系;
●平滑的将子图中的节点移动到新的布局的位置;
●然后呈现子图中所选择的节点与激活的圆环上的连接点之间的关系。
如图9b所示,可以将节点2的子图呈现在焦点区域中,还呈现了其中的某个节点与连接点之间的关系,从而既可以获得层次化图结构数据整体的信息,还可以获得某个具体细节的信息,给用户带来极大的便利。
在呈现了节点的情况下,通常该节点与激活的圆环上的连接点的关系是经过聚类处理的,例如图9a中的节点“Finley”与连接点2之间的关系是对该节点与节点2的子图中的节点的关系进行了合并而得到。如果用户还希望获得该节点与连接点2的关系的具体信息,例如该节点“Finley”与节点2中的那些人有关系,则用户可以启动聚焦关系的处理例如鼠标双击所选择的连接点。根据用户的操作在步骤S830c来进行聚焦关系的处理,具体如下:
●首先找到焦点区域410中的当前聚焦的节点,诸如“Finley”;
●然后除去聚焦的节点例如“Finley”与所选择的诸如节点2的连接点之间的关系;
●呈现聚焦的节点与相关的子图区域中的节点之间的关系。
如图9c所示,在这种情况下将节点“Finley”与节点2的概括关系具体细化为节点“Finley”与节点2的部门中的各个节点之间的关系,从而使用户清楚各部门之间的具体联系。当然,为了其它用途,也可以进行相反的操作,即从具体显示聚焦的节点与连接点之下层级中的节点之间的关系恢复呈现聚焦的节点与连接点之间的关系。
最后,在步骤S840,该动态聚焦过程结束。
为了获得层次化图结构数据更具体的信息,在本发明的另外的实施例中,还提供了一种导航处理来实现层次化图结构数据的可视化的交互。如图10a所示,在步骤S101开始导航处理过程。该步骤通常由用户来触发,可以采用在视图上拖动鼠标或者其它的方式来启动该过程。
在步骤S102将焦点区域410和子图区域420投影到球体上,也可以将其映射到双曲面上;
接着在步骤S103旋转呈现该球体,将希望获得的信息旋转到可见的半球上,或者转换该双曲面;
在随后的步骤S104计算当前可见的空间或者区域,例如计算那些节点或者关系是隐藏的,那些是可见的;
最后在步骤S105在视图上呈现或者隐藏节点或者区域并在步骤S106结束该过程。
在本发明的实施例中,还提供了一种聚合或者权重过滤处理使层次化图结构数据的可视化更加清晰,避免了出现三维视图中大量线条交叠的现象。具体来讲,在视图中通过采用聚焦+上下文来减少节点和关系,这样在不可见的空间或者区域的节点及其关系将隐藏起来,缺省设置为只有重要的节点及其关系被呈现。同时只呈现同一子图中的各个节点之间的关系,不同子图或者节点之间的关系通过与其父节点的连接点(在焦点区域410中)的关系来表示,从而减少了关系连线,使视图更加直观易读,该具体原理与上述相同,在此不再赘述。在实施例中,还可以使用权重滤波器来将不重要的关系或者节点过滤掉从而减少视图的关系连线,具体如下:
检查可视的半球上的每个节点或者连线的权重,如果该权重比该滤波器的当前值小,则将该节点或者连线设置为看不见,再呈现可视的半球,最终将可视的半球映射到视图。
在同一个发明构思下,图11示出了根据本发明的一个实施例的可视化装置的结构框图。在本实施例中,与前述实施例原理相同的部分将适当省略其说明。下面结合附图,对本实施例进行详细的描述。
如图11所示,本实施例的层次化图结构数据的可视化装置11包括:焦点区域呈现单元111,用于在焦点区域410呈现该层次化图结构数据的细化到一个指定层级的多个节点及其之间的关系;以及子图区域呈现单元112,用于在子图区域420呈现该层次化图结构数据的指定层级以下的节点及其之间的关系。
在本发明的实施例中,焦点区域呈现单元111通过利用圆环上的多个分段分别表示该层次化图结构数据的细化到指定层级的多个节点,利用这些段之间的连线表示细化到指定层级的这些节点之间的关系。具体而言,焦点区域呈现单元111还包括用于采用多个同心圆来表示该层次化图结构数据的细化到不同层级的节点的单元,用来根据圆锥等式、半球等式或二次曲线等式来计算特定层级对应的同心圆的半径长度,在此,激活的圆环同样位于焦点区域410中的最外侧;以及用于根据在圆环上的每一个节点的相应权重或者子节点的数量来计算该弧段对应的扩展角度的单元,从而得到该弧段占据的长度。焦点区域呈现单元111也根据节点之间的关系的权重通过激活的圆环上的连接点之间的连线来呈现各节点之间的关系。
子图区域呈现单元112在焦点区域411中的激活的圆环的多个段的每一个相对应的外侧呈现对应的节点之下的子节点及其之间的关系。具体而言,子图区域呈现单元112利用径向布局(radial layout)或者环形布局(circle layout)或者二次曲线布局(hyperbolic layout)中的任意一种来呈现该层次化图结构数据的指定层级以下的节点及其之间的关系。
在本发明的实施例中,层次化图结构数据的可视化装置11还可以包括层级响应单元113,用于根据用户的操作,改变指定的层级;信息响应单元114,用于根据用户的操作,在焦点区域呈现所述层次化图结构数据中指定的节点或者所述指定层级以下的节点及其之间的关系;或者导航单元115,用于将所述焦点区域和所述子图区域投影到球体上并旋转呈现所述球体。参照图11,这些单元均与焦点呈现单元111以及子图区域呈现单元112相连,控制在焦点区域410和子图区域420呈现特定节点及其之间的关系。
进一步,信息响应单元114还可以根据用户的操作,呈现指定的节点与指定层级以下的节点之间的关系或者指定的节点与所选择的焦点区域最外侧的圆环上的节点的关系。
在本发明的实施例中,层次化图结构数据的可视化装置11进一步包括聚类减少单元116,用于通过聚合或者权重过滤来减少所呈现的节点之间的关系。该聚类减少单元与焦点区域呈现单元111以及子图区域呈现单元112相连,以减少在焦点区域410以及子图区域420上的聚类(即与在不可见半球或者区域上的节点和关系相对应的节点和关系,或者不重要的节点和关系),从而可以使视图清晰易读。
本实施例的层次化图结构数据的可视化装置11实现本发明的实施例的层次化图结构数据可视化方法。通过以上描述可以看出,该层次化图结构数据的可视化装置11可以层次清楚地直观显示层次化图结构数据的指定层级的节点及其之间的关系,也可以根据用户的需要来动态显示整体结构中的某个节点或者子图或者关系的具体信息,或者层级的改变关系,这样即使在层次化图结构数据的层级和/或图信息量很多情况下,也可以清楚地显示层次化图结构数据的整体层级信息以及节点之间的关系,克服了现有技术中显示杂乱并且信息不全面的问题,并且能够根据用户的要求定制视图的显示。
本领域的熟练技术人员可以理解上述的方法和装置可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本实施例的层次化图结构数据的可视化装置11及其组件可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。
虽然以上结合具体实施例对本发明的层次化图结构数据可视化的方法、装置及其计算机程序产品进行了详细描述,但本发明并不限于此,本领域普通技术人员能够理解可以对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围;本发明的保护范围由所附权利要求来限定。