技术领域
[0001] 本
发明属于计算机技术领域,尤其涉及一种基于仙人掌树的
数据可视化方法、装置、设备及存储介质。
背景技术
[0002] 在层次结构的信息可视化理论技术研究中,数据信息会被看作树中的
节点,数据信息内部的联系会被抽象为树中连接节点的边,最终形成与数据信息相对应的
树形结构,并运用可视化技术显示在有效物理显示区域内部,以此达到增强用户对层次结构数据的快捷认知能
力。经过20多年的深入研究,树图不仅从最初简单的矩形方
块发展为具有良好外观的实用性可视化技术,而且成为层次结构数据编码和支持特定任务的平常技术。
[0003] 然而,当需要表示的数据量很大时,传统树状图中节点的数量随着树形深度的增加呈指数级增长,与根节点接近的
位置有比较少的节点而远离根节点的位置会有较多的节点,导致空间利用率大大降低且空间分配也不均匀,远离根节点的地方容易造成节点聚集难以辨识。例如,径向树中的圆环解决了屏幕空间浪费的危机,但不同层次间的层次结构模糊;矩阵树图中有些节点层次较深,当占比太小时这些节点在矩阵树图中会退
化成接近
像素点矩形,不易辨认;
冰柱图中会出现细长的矩形,不便于观察,而且子树之间的深度差异比较大,在不同分支下会有很大的锯齿形成。
发明内容
[0004] 本发明的目的在于提供一种基于仙人掌树的数据可视化方法、装置、设备及存储介质,旨在解决由于
现有技术中通过树图对数据进行可视化时,树图所在空间的利用率不高且空间分配不均,导致数据可视化效果不佳的问题。
[0005] 一方面,本发明提供了一种基于仙人掌树的数据可视化方法,所述方法包括下述步骤:
[0006] 接收输入数据,所述输入数据中存放了预设叶
子节点的相关信息;
[0007] 对所述叶子节点的相关信息进行处理,获得仙人掌树中所有的
父节点和每个所述父节点对应的子节点集合;
[0008] 根据每个所述父节点对应的子节点集合,确定所述仙人掌树中每个节点的节点半径和
角度信息;
[0009] 根据所述仙人掌树中每个节点的节点半径和角度信息,生成并绘制所述仙人掌树的可缩放矢量图形。
[0010] 另一方面,本发明提供了一种基于仙人掌树的数据可视化装置,所述装置包括:
[0011] 数据输入单元,用于接收输入数据,所述输入数据中存放了预设叶子节点的相关信息;
[0012] 叶子节点处理单元,用于对所述叶子节点的相关信息进行处理,获得仙人掌树中所有的父节点和每个所述父节点对应的子节点集合;
[0013] 节点信息确定单元,用于根据每个所述父节点对应的子节点集合,确定所述仙人掌树中每个节点的节点半径和角度信息;以及
[0014] 图形绘制单元,用于根据所述仙人掌树中每个节点的节点半径和角度信息,生成并绘制所述仙人掌树的可缩放矢量图形。
[0015] 另一方面,本发明还提供了一种计算设备,包括
存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的
计算机程序,所述处理器执行所述计算机程序时实现如上述基于仙人掌树的数据可视化方法所述的步骤。
[0016] 另一方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述基于仙人掌树的数据可视化方法所述的步骤。
[0017] 本发明接收输入数据,该输入数据中存放了预设叶子节点的相关信息,对这些相关信息进行处理,获得仙人掌树中所有父节点和父节点对应的子节点集合,根据每个父节点对应的子节点集合,确定仙人掌树中每个节点的节点半径和角度信息,根据每个节点的节点半径和角度信息,生成并绘制仙人掌树的可缩放矢量图形,检测用户的交互动作,根据该交互动作对可缩放矢量图形进行调节,从而通对基于树形结构的数据可视化效果进行调整,提高数据可视化的空间利用率和空间分配效果。
附图说明
[0018] 图1是本发明
实施例一提供的基于仙人掌树的数据可视化方法的实现
流程图;
[0019] 图2是本发明实施例二提供的基于仙人掌树的数据可视化装置的结构示意图;
[0020] 图3是本发明实施例二提供的基于仙人掌树的数据可视化装置的优选结构示意图;以及
[0021] 图4是本发明实施例三提供的计算设备的结构示意图。
具体实施方式
[0022] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0023] 以下结合具体实施例对本发明的具体实现进行详细描述:
[0024] 实施例一:
[0025] 图1示出了本发明实施例一提供的基于仙人掌树的数据可视化方法的实现流程,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
[0026] 在步骤S101中,接收输入数据,输入数据中存放了预设叶子节点的相关信息。
[0027] 本发明实施例适用于数据可视化平台或系统,待可视化的数据可为医疗数据、
生物数据等,例如HIV
病毒感染过程数据。接收输入数据,输入数据中存放了预设叶子节点的相关信息。其中,预先通过现有的树形结构对待可视化的数据进行表示,获取该数据结构中叶子节点的相关信息。输入数据的格式可为json格式。
[0028] 在本发明实施例中,叶子节点的相关信息中包括叶子节点的名称信息,叶子节点的名称信息由根节点到该叶子节点的路径上所有节点的名字构成,每个节点的名字通过预设的分隔符隔开。例如,叶子节点的名称信息可表示为:“root_name.leaf_parent_paren_name.leaf_parent_name.leaf_name”,其中,“.”为分割符,“root_name”表示根节点名字,“leaf_parent_paren_name”和“leaf_parent_name”分别为根节点到该叶子节点的路径中间节点的名字,“leaf_name”为叶子节点的名字。
[0029] 在本发明实施例中,叶子节点的相关信息还可包括节点大小和节点数组。节点大小为叶子节点作为一个数据结构的大小,可设置为一个固定值。节点数组用来存放与该叶子节点有链接关系的其它叶子节点的名字。
[0030] 在步骤S102中,对叶子节点的相关信息进行处理,获得仙人掌树中所有的父节点和每个父节点对应的子节点集合。
[0031] 在本发明实施例中,根据叶子节点名称信息中的分割符,对该名称信息进行分割,可得到叶子节点到根节点路径上所有节点的名称,其中,叶子节点也为仙人掌树的叶子节点,根节点也为仙人掌树的根节点,仙人掌树并不改变输入数据所对应的原始树形结构,而是通过对原始树形结构的布局进行优化,使其形状类似于仙人掌,以提高数据可视化的空间利用率和空间分配效果。
[0032] 在本发明实施例中,在获得所有叶子节点到根节点路径上所有节点的名称后,可以获得仙人掌树中所有的父节点(除叶子节点以外的节点)和每个父节点对应的子节点集合。
[0033] 在步骤S103中,根据每个父节点对应的子节点集合,确定仙人掌树中每个节点的节点半径和角度信息。
[0034] 在本发明实施例中,在得到仙人掌树中每个父节点对应的子节点集合时,根据叶子节点对应的预设权值,可计算仙人掌树中每个节点的权值,根据仙人掌树中每个节点的权值,确定仙人掌树中每个节点的节点半径和角度信息。
[0035] 优选地,在计算仙人掌树中每个节点的权值时,父节点的权值为该父节点对应子节点集合中所有子节点的权值之和,当子节点有子树时,父节点的权值需要加上该子树的权值,从而通过权值体现出节点之间的层次关系,有利于提高后续的可视化效果。
[0036] 优选地,在根据仙人掌树中每个节点的权值确定每个节点的节点半径时,预先设置一个单位权值对应的节点半径,再根据节点的权值与节点的半径成正比的关系,计算每个节点的节点半径,节点半径为用于表示节点的圆形的半径,从而提高后续的可视化效果。
[0037] 优选地,在根据仙人掌树中每个节点的权值确定每个节点的角度信息时,按照权值升序对父节点对应的子节点集合中的子节点进行排序。为了使可视化时,权值较大的子节点位于父节点上方的中心位置,权值较小的子节点在父节点上方中心位置的两侧均匀分布,在排序后的子节点集合中依次计算每个子节点相对于父节点上方中心位置的偏移角度,每个子节点的偏移角度为子节点权值对应的偏移角度加上前一个子节点的偏移角度,从而提高可视化的空间利用率和空间分配效果。
[0038] 在步骤S104中,根据仙人掌树中每个节点的节点半径和角度信息,生成并绘制仙人掌树的可缩放矢量图形。
[0039] 在本发明实施例中,在确定仙人掌树中每个节点的节点半径和角度信息后,同样也可以得到每个节点在仙人掌树的深度信息。根据每个节点的节点半径、角度信息、深度信息和权值、以及仙人掌树中父节点和子节点的对应关系,可生成仙人掌树对应的可缩放矢量图形(Scalable Vector Graphics,简称SVG)。例如,可采用预设的集群图投影生成器生成仙人掌树对应的可缩放矢量图形。
[0040] 在本发明实施例中,在绘制仙人掌树的可缩放矢量图形时,可通过数据驱动文档(Data-Driven Documents,简称D3)在预设的显示屏幕或Web浏览页面上上对仙人掌树的可缩放矢量图形进行绘制和
渲染,从而有效解决节点间堆叠导致节点边缘交叉的问题。
[0041] 在步骤S105中,检测用户的交互动作,根据交互动作对可缩放矢量图形进行调节。
[0042] 在本发明实施例中,用户可通过
鼠标点击或移动(或者还可通过屏幕触摸)来与仙人掌树的可缩放矢量图像进行交互。优选地,为了避免仙人掌树全部节点名称显示时
覆盖住仙人掌树的外形,在显示界面上仅显示节点和节点之间的链接关系,当检测到鼠标移动至节点的圆形区域或者用户触屏点击节点的圆形区域时,显示该节点的名称。
[0043] 又优选地,当检测到用户的节点放大或缩小动作时,对节点放大或缩小动作对应的节点进行放大或缩小操作,从而便于用户对单个感兴趣节点进行查看。例如,节点放大或缩小动作可为鼠标中键的滚动动作,也可以为触屏的放大或缩小动作。
[0044] 又优选地,当检测到用户选中仙人掌树中的一条边时,通过不同的
颜色显示该边的源节点和目标节点,从而帮助用户在视觉上区分源节点和目标节点。
[0045] 在本发明实施例中,接收输入数据,该输入数据中存放了预设叶子节点的相关信息,对这些相关信息进行处理,获得仙人掌树中所有父节点和父节点对应的子节点集合,根据每个父节点对应的子节点集合,确定仙人掌树中每个节点的节点半径和角度信息,根据每个节点的节点半径和角度信息,生成并绘制仙人掌树的可缩放矢量图形,检测用户的交互动作,根据该交互动作对可缩放矢量图形进行调节,从而通对基于树形结构的数据可视化效果进行调整,提高数据可视化的空间利用率和空间分配效果。
[0046] 实施例二:
[0047] 图2示出了本发明实施例二提供的来电提醒装置的结构,为了便于说明,仅示出了与本发明实施例相关的部分,其中包括:
[0048] 数据输入单元21,用于接收输入数据,输入数据中存放了预设叶子节点的相关信息。
[0049] 在本发明实施例中,输入数据中存放了预设叶子节点的相关信息。其中,预先通过现有的树形结构对待可视化的数据进行表示,获取该数据结构中叶子节点的相关信息。输入数据的格式可为json格式。
[0050] 在本发明实施例中,叶子节点的相关信息中包括叶子节点的名称信息,叶子节点的名称信息由根节点到该叶子节点的路径上所有节点的名字构成,每个节点的名字通过预设的分隔符隔开。
[0051] 在本发明实施例中,叶子节点的相关信息还可包括节点大小和节点数组。节点大小为叶子节点作为一个数据结构的大小,可设置为一个固定值。节点数组用来存放与该叶子节点有链接关系的其它叶子节点的名字。
[0052] 叶子节点处理单元22,用于对叶子节点的相关信息进行处理,获得仙人掌树中所有的父节点和每个父节点对应的子节点集合。
[0053] 在本发明实施例中,根据叶子节点名称信息中的分割符,对该名称信息进行分割,可得到叶子节点到根节点路径上所有节点的名称,其中,叶子节点也为仙人掌树的叶子节点,根节点也为仙人掌树的根节点,仙人掌树并不改变输入数据所对应的原始树形结构,而是通过对原始树形结构的布局进行优化,使其形状类似于仙人掌,以提高数据可视化的空间利用率和空间分配效果。
[0054] 在本发明实施例中,在获得所有叶子节点到根节点路径上所有节点的名称后,可以获得仙人掌树中所有的父节点(除叶子节点以外的节点)和每个父节点对应的子节点集合。
[0055] 节点信息确定单元23,用于根据每个父节点对应的子节点集合,确定仙人掌树中每个节点的节点半径和角度信息。
[0056] 在本发明实施例中,在得到仙人掌树中每个父节点对应的子节点集合时,根据叶子节点对应的预设权值,可计算仙人掌树中每个节点的权值,根据仙人掌树中每个节点的权值,确定仙人掌树中每个节点的节点半径和角度信息。
[0057] 优选地,在计算仙人掌树中每个节点的权值时,父节点的权值为该父节点对应子节点集合中所有子节点的权值之和,当子节点有子树时,父节点的权值需要加上该子树的权值,从而通过权值体现出节点之间的层次关系,有利于提高后续的可视化效果。
[0058] 优选地,在根据仙人掌树中每个节点的权值确定每个节点的节点半径时,预先设置一个单位权值对应的节点半径,再根据节点的权值与节点的半径成正比的关系,计算每个节点的节点半径,节点半径为用于表示节点的圆形的半径,从而提高后续的可视化效果。
[0059] 优选地,在根据仙人掌树中每个节点的权值确定每个节点的角度信息时,按照权值升序对父节点对应的子节点集合中的子节点进行排序。为了使可视化时,权值较大的子节点位于父节点上方的中心位置,权值较小的子节点在父节点上方中心位置的两侧均匀分布,在排序后的子节点集合中依次计算每个子节点相对于父节点上方中心位置的偏移角度,每个子节点的偏移角度为子节点权值对应的偏移角度加上前一个子节点的偏移角度,从而提高可视化的空间利用率和空间分配效果。
[0060] 图形绘制单元24,用于根据仙人掌树中每个节点的节点半径和角度信息,生成并绘制仙人掌树的可缩放矢量图形。
[0061] 在本发明实施例中,在确定仙人掌树中每个节点的节点半径和角度信息后,同样也可以得到每个节点在仙人掌树的深度信息。根据每个节点的节点半径、角度信息、深度信息和权值、以及仙人掌树中父节点和子节点的对应关系,可生成仙人掌树对应的可缩放矢量图形。例如,可采用预设的集群图投影生成器生成仙人掌树对应的可缩放矢量图形。
[0062] 在本发明实施例中,在绘制仙人掌树的可缩放矢量图形时,可通过数据驱动文档在预设的显示屏幕或Web浏览页面上上对仙人掌树的可缩放矢量图形进行绘制和渲染,从而有效解决节点间堆叠导致节点边缘交叉的问题。
[0063] 图形交互单元25,用于检测用户的交互动作,根据交互动作对可缩放矢量图形进行调节。
[0064] 在本发明实施例中,用户可通过鼠标点击或移动(或者还可通过屏幕触摸)来与仙人掌树的可缩放矢量图像进行交互。优选地,为了避免仙人掌树全部节点名称显示时覆盖住仙人掌树的外形,在显示界面上仅显示节点和节点之间的链接关系,当检测到鼠标移动至节点的圆形区域或者用户触屏点击节点的圆形区域时,显示该节点的名称。
[0065] 又优选地,当检测到用户的节点放大或缩小动作时,对节点放大或缩小动作对应的节点进行放大或缩小操作,从而便于用户对单个感兴趣节点进行查看。例如,节点放大或缩小动作可为鼠标中键的滚动动作,也可以为触屏的放大或缩小动作。
[0066] 又优选地,当检测到用户选中仙人掌树中的一条边时,通过不同的颜色显示该边的源节点和目标节点,从而帮助用户在视觉上区分源节点和目标节点。
[0067] 优选地,如图3所示,数据输入单元21包括:
[0068] 名称分割单元311,用于根据预设的分隔符对叶子节点的名称进行分割,获得叶子节点到仙人掌树根节点的路径上所有节点的名称。
[0069] 优选地,节点信息确定单元23包括:
[0070] 权值确定单元331,用于根据叶子节点对应的预设权值和每个父节点对应的子节点集合,确定仙人掌树中每个节点的权值;以及
[0071] 半径确定单元332,用于根据仙人掌树中每个节点的权值,确定每个节点的节点半径。
[0072] 在本发明实施例中,接收输入数据,该输入数据中存放了预设叶子节点的相关信息,对这些相关信息进行处理,获得仙人掌树中所有父节点和父节点对应的子节点集合,根据每个父节点对应的子节点集合,确定仙人掌树中每个节点的节点半径和角度信息,根据每个节点的节点半径和角度信息,生成并绘制仙人掌树的可缩放矢量图形,检测用户的交互动作,根据该交互动作对可缩放矢量图形进行调节,从而通对基于树形结构的数据可视化效果进行调整,提高数据可视化的空间利用率和空间分配效果。
[0073] 在本发明实施例中,来电提醒装置的各单元可由相应的
硬件或
软件单元实现,各单元可以为独立的软、硬件单元,也可以集成为一个软、硬件单元,在此不用以限制本发明。
[0074] 实施例三:
[0075] 图4示出了本发明实施例三提供的计算设备的结构,为了便于说明,仅示出了与本发明实施例相关的部分。
[0076] 本发明实施例的计算设备4包括处理器40、存储器41以及存储在存储器41中并可在处理器40上运行的计算机程序42。该处理器40执行计算机程序42时实现上述方法实施例中的步骤,例如图1所示的步骤S101至S105。或者,处理器40执行计算机程序42时实现上述装置实施例中各单元的功能,例如图2所示单元21至25的功能。
[0077] 在本发明实施例中,接收输入数据,该输入数据中存放了预设叶子节点的相关信息,对这些相关信息进行处理,获得仙人掌树中所有父节点和父节点对应的子节点集合,根据每个父节点对应的子节点集合,确定仙人掌树中每个节点的节点半径和角度信息,根据每个节点的节点半径和角度信息,生成并绘制仙人掌树的可缩放矢量图形,检测用户的交互动作,根据该交互动作对可缩放矢量图形进行调节,从而通对基于树形结构的数据可视化效果进行调整,提高数据可视化的空间利用率和空间分配效果。
[0078] 实施例四:
[0079] 在本发明实施例中,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法实施例中的步骤,例如,图1所示的步骤S101至S105。或者,该计算机程序被处理器执行时实现上述装置实施例中各单元的功能,例如图2所示单元21至25的功能。
[0080] 在本发明实施例中,接收输入数据,该输入数据中存放了预设叶子节点的相关信息,对这些相关信息进行处理,获得仙人掌树中所有父节点和父节点对应的子节点集合,根据每个父节点对应的子节点集合,确定仙人掌树中每个节点的节点半径和角度信息,根据每个节点的节点半径和角度信息,生成并绘制仙人掌树的可缩放矢量图形,检测用户的交互动作,根据该交互动作对可缩放矢量图形进行调节,从而通对基于树形结构的数据可视化效果进行调整,提高数据可视化的空间利用率和空间分配效果。
[0081] 本发明实施例的计算机可读存储介质可以包括能够携带计算机程序代码的任何实体或装置、记录介质,例如,ROM/RAM、磁盘、光盘、闪存等存储器。
[0082] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何
修改、等同替换和改进等,均应包含在本发明的保护范围之内。