一種兩類關(guān)聯(lián)層次數(shù)據(jù)的可視化方法
【專利摘要】本發(fā)明屬于信息可視化領(lǐng)域,具體涉及一種兩類關(guān)聯(lián)層次數(shù)據(jù)的可視化方法,用于可視化關(guān)聯(lián)層次數(shù)據(jù)。本發(fā)明先用基于力導(dǎo)向的節(jié)點(diǎn)-鏈接樹和基于放射環(huán)的空間填充樹分別可視化相互獨(dú)立的兩個(gè)層次數(shù)據(jù),然后通過直線將兩棵樹中具有關(guān)聯(lián)關(guān)系的節(jié)點(diǎn)連接起來,形成一個(gè)雙關(guān)聯(lián)樹。為減少邊交叉和視覺混亂現(xiàn)象,通過路徑繞行的布局優(yōu)化算法,引入了隱形圈的概念,用三次貝塞爾曲線取代直線優(yōu)化關(guān)系邊。本發(fā)明提出的針對兩類關(guān)聯(lián)層次數(shù)據(jù)的可視化方法,可同時(shí)展示兩類關(guān)聯(lián)層次數(shù)據(jù)中的層次關(guān)系和關(guān)聯(lián)關(guān)系,并有效減少視覺雜亂,幫助用戶查看數(shù)據(jù)間的關(guān)聯(lián)關(guān)系,有助于進(jìn)一步的數(shù)據(jù)分析。
【專利說明】一種兩類關(guān)聯(lián)層次數(shù)據(jù)的可視化方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于信息可視化領(lǐng)域,具體涉及一種兩類關(guān)聯(lián)層次數(shù)據(jù)的可視化方法,用 于可視化關(guān)聯(lián)層次數(shù)據(jù)。
【背景技術(shù)】
[0002] 在現(xiàn)實(shí)工作和生活中,具有相互聯(lián)系的多個(gè)層次數(shù)據(jù)廣泛存在于食品安全、金融 信息和社會網(wǎng)絡(luò)等各領(lǐng)域中。
[0003] 層次數(shù)據(jù)是一組通過層次結(jié)構(gòu)關(guān)系互相關(guān)聯(lián)的數(shù)據(jù)。
[0004] 兩類關(guān)聯(lián)層次數(shù)據(jù)是指具有關(guān)聯(lián)關(guān)系的兩個(gè)層次數(shù)據(jù),包括:2個(gè)層次數(shù)據(jù)以及2 個(gè)層次數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系信息。
[0005] 如:在食品中農(nóng)藥殘留檢測數(shù)據(jù)就是一個(gè)兩類層次數(shù)據(jù)。食品中農(nóng)藥殘留檢測數(shù) 據(jù)中含有地域和農(nóng)藥分類信息兩個(gè)層次數(shù)據(jù),地域信息包括全國7個(gè)區(qū)域:華北、華東、華 南、華中、東北、西北和西南;區(qū)域下包含不同的省;省下包含市;市下包含區(qū)縣;區(qū)縣下包 含不同的超市,具有明顯的層次結(jié)構(gòu)。農(nóng)藥按照毒性程度可以分為4個(gè)類別:低毒、中毒、高 毒和劇毒;每種毒性下面又包含有多種農(nóng)藥,也具有層次結(jié)構(gòu)。不同超市的農(nóng)產(chǎn)品檢出農(nóng)藥 情況就是地域信息與農(nóng)藥信息之間的關(guān)聯(lián)關(guān)系。如何對兩類層次數(shù)據(jù)及其隱含的相互關(guān)聯(lián) 關(guān)系進(jìn)行可視化和可視分析是一個(gè)亟待解決的問題。
[0006] 迄今為止,針對單個(gè)層次數(shù)據(jù)的可視化方法,已取得大量成果,其主要技術(shù)包括節(jié) 點(diǎn)-鏈接法(Node-Link)和空間填充法(Space-Filling)兩大類。
[0007] 節(jié)點(diǎn)-鏈接法是外觀上最接近樹型結(jié)構(gòu)的層次數(shù)據(jù)可視化方法,該方法采用節(jié)點(diǎn) 表示樹型結(jié)構(gòu)中的信息單元,用連線表示樹型結(jié)構(gòu)中的父子關(guān)系,可以直觀的展示層次結(jié) 構(gòu)。常見的有樹(Tree),雙曲樹(Hyperbolic Browser),徑向樹(Radial Tree)等??臻g 填充法的主要思想是將整個(gè)信息集合映射到一個(gè)區(qū)域,通過用矩形,正方形,扇形或是多 邊形等的嵌套填充來描述層次結(jié)構(gòu)。其中常見的方法有兩種:樹圖(Treemap)和放射環(huán) (Sunburst)〇
[0008] 此外,混合(Hybrid)布局算法在層次數(shù)據(jù)可視化方法中也逐漸發(fā)展起來,其主要 思想是將節(jié)點(diǎn)-鏈接、空間填充以及簡單的統(tǒng)計(jì)圖有效的結(jié)合起來,達(dá)到優(yōu)勢互補(bǔ)的效果。 Zhao S等人在2005年在文獻(xiàn)〈〈Elastic hierarchies:Combining treemaps and node-link diagrams》中提出將節(jié)點(diǎn)-鏈接和樹圖相結(jié)合,在有限的屏幕空間內(nèi),允許用戶對樹中任 何一個(gè)節(jié)點(diǎn)進(jìn)行節(jié)點(diǎn)-鏈接和樹圖之間的切換顯示,可以高效查看各節(jié)點(diǎn)的信息屬性,用 以幫助用戶更好的了解樹圖中所攜帶的信息。該方法保留了節(jié)點(diǎn)-鏈接對層次結(jié)構(gòu)和樹 圖對節(jié)點(diǎn)權(quán)值的高表現(xiàn)性。Huang M L等人在2009年在文獻(xiàn)《Treemapbar:Visualizing additional dimensions of data in bar chart》中將樹圖嵌入到柱狀圖中,當(dāng)柱狀圖的 密度增加時(shí),可以使用表透鏡(TableLens)技術(shù)查看特定區(qū)域的細(xì)節(jié),優(yōu)化顯示空間的利 用率。2012年,Kobayashi A等人在文獻(xiàn)《Edge Equalized Treemaps》中利用樹圖和柱狀 圖的結(jié)合,將柱狀圖嵌入到樹圖中,柱狀圖的寬度相等。通過該方法,可以對數(shù)據(jù)進(jìn)行比較。 對層次數(shù)據(jù)可視化的方法還有很多,但這些方法主要解決同一類層次數(shù)據(jù)的可視化和可視 分析問題,對兩類層次數(shù)據(jù)的可視分析問題較少涉及。
[0009] 因此,已公開的對層次數(shù)據(jù)進(jìn)行可視化的方法并不能有效地解決兩類層次數(shù)據(jù)及 其關(guān)聯(lián)關(guān)系的可視分析。
【發(fā)明內(nèi)容】
[0010] 本發(fā)明目的是提供一種兩類關(guān)聯(lián)層次數(shù)據(jù)的可視化方法。本發(fā)明的基本思想是先 用基于力導(dǎo)向的節(jié)點(diǎn)-鏈接樹和基于放射環(huán)的空間填充樹分別可視化相互獨(dú)立的兩類層 次數(shù)據(jù),然后通過直線將兩棵樹中具有關(guān)聯(lián)關(guān)系的節(jié)點(diǎn)連接起來,形成一個(gè)雙關(guān)聯(lián)樹;為減 少邊交叉和視覺混亂現(xiàn)象,本發(fā)明通過路徑繞行的布局優(yōu)化算法,引入了隱形圈的概念,用 三次貝塞爾曲線取代直線優(yōu)化關(guān)系邊。
[0011] 本發(fā)明的目的是通過下述技術(shù)方案實(shí)現(xiàn)的。
[0012] 一種兩類關(guān)聯(lián)層次數(shù)據(jù)的可視化方法,所述兩類關(guān)聯(lián)層次數(shù)據(jù)包括:2個(gè)層次數(shù) 據(jù)以及2個(gè)層次數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系信息,其特征在于:其具體操作步驟為:
[0013] 步驟一、用兩個(gè)多叉樹分別存儲待可視化的兩類層次數(shù)據(jù)中的兩個(gè)層次數(shù)據(jù),兩 個(gè)多叉樹分別表示為多叉樹A和多叉樹B。所述多叉樹中的節(jié)點(diǎn)采用順序存儲結(jié)構(gòu)與鏈?zhǔn)?存儲結(jié)構(gòu)相結(jié)合的方法,具體為:采用鏈?zhǔn)酱鎯Y(jié)構(gòu)按照自頂向下的順序存儲每一層次中 的第一個(gè)節(jié)點(diǎn);對于同一層次中的節(jié)點(diǎn)采用順序存儲結(jié)構(gòu)。
[0014] 步驟二、對步驟一中得到的多叉樹A采用放射環(huán)(sunburst)算法生成空間填充布 局(layout of space-filling) 〇
[0015] 步驟三、對步驟一中得到的多叉樹B采用力導(dǎo)向(force-direct)算法生成節(jié) 點(diǎn)-鏈接布局(layout of node-link),并使節(jié)點(diǎn)-鏈接布局中的根節(jié)點(diǎn)位于步驟二中得到 的空間填充布局的根節(jié)點(diǎn)顯示區(qū)域的中心點(diǎn)(用符號〇表示)位置處,確保節(jié)點(diǎn)-鏈接布 局位于空間填充布局中的根節(jié)點(diǎn)顯示區(qū)域內(nèi)。
[0016] 步驟四、對兩類層次數(shù)據(jù)中的關(guān)聯(lián)關(guān)系進(jìn)行可視化。具體為:
[0017] 步驟4. 1 :根據(jù)2個(gè)層次數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系信息,分別找到多叉樹A和多叉樹B 中有關(guān)聯(lián)關(guān)系的節(jié)點(diǎn)對,并在步驟三得到的視圖上將有關(guān)聯(lián)關(guān)系的節(jié)點(diǎn)對用直線段進(jìn)行連 接,稱所述直線段為直線關(guān)系邊;多叉樹A和多叉樹B中有關(guān)聯(lián)關(guān)系的節(jié)點(diǎn)稱為關(guān)系節(jié)點(diǎn)。
[0018] 步驟4. 2 :重復(fù)步驟4. 1的操作,直至將2個(gè)層次數(shù)據(jù)之間的所有關(guān)聯(lián)關(guān)系信息均 用直線關(guān)系邊顯示在步驟三得到的視圖上,得到初步可視化結(jié)果。
[0019] 步驟五、對初步可視化結(jié)果進(jìn)行路徑繞行處理,得到最終可視化結(jié)果。
[0020] 由于步驟4生成的初步可視化結(jié)果視覺雜亂較嚴(yán)重,因此對步驟4生成的初步可 視化結(jié)果進(jìn)行路徑繞行處理。具體操作步驟為:
[0021] 步驟5. 1 :設(shè)置一個(gè)半徑為r,圓心位于點(diǎn)0的隱形圈,Γι < r < r2,其中,Γι是節(jié) 點(diǎn)-鏈接布局中距離根節(jié)點(diǎn)最遠(yuǎn)的節(jié)點(diǎn)與根節(jié)點(diǎn)之間的距離;r 2是空間填充布局中根節(jié)點(diǎn) 顯示區(qū)域的半徑長度。
[0022] 步驟5. 2 :對步驟4生成的可視化結(jié)果中節(jié)點(diǎn)-鏈接布局中的所有關(guān)系節(jié)點(diǎn)依次 做以下處理,得到以當(dāng)前關(guān)系節(jié)點(diǎn)為其中一個(gè)端點(diǎn)的直線關(guān)系邊經(jīng)過繞行處理后,在隱形 圈內(nèi)部的路徑,具體為:
[0023] 首先,找到當(dāng)前關(guān)系節(jié)點(diǎn)(用符號NA表示)的父節(jié)點(diǎn)(用符號NB表示)和節(jié)點(diǎn) NB的父節(jié)點(diǎn)(用符號NC表示);并計(jì)算通過節(jié)點(diǎn)NB和節(jié)點(diǎn)NC的直線的斜率,用符號kBC表 示。然后,過節(jié)點(diǎn)NA,做一條斜率為k B。的直線,該直線與步驟5. 1中所述隱形圈有2個(gè)交 點(diǎn),分別計(jì)算節(jié)點(diǎn)NA到2個(gè)交點(diǎn)的距離,用符號D表示2個(gè)交點(diǎn)中距離節(jié)點(diǎn)NA近的交點(diǎn)。 最后,連接點(diǎn)NA和點(diǎn)D,線段NAD即為以當(dāng)前關(guān)系節(jié)點(diǎn)為其中一個(gè)端點(diǎn)的直線關(guān)系邊經(jīng)過繞 行處理后,在隱形圈內(nèi)部的路徑。
[0024] 步驟5. 3 :對步驟4生成的可視化結(jié)果中節(jié)點(diǎn)-鏈接布局中的所有關(guān)系節(jié)點(diǎn)依次 做以下處理:
[0025] 首先,查看當(dāng)前關(guān)系節(jié)點(diǎn)NA的直線關(guān)系邊的個(gè)數(shù),然后對當(dāng)前關(guān)系節(jié)點(diǎn)NA的每條 直線關(guān)系邊做以下處理,得到每條直線關(guān)系邊經(jīng)過繞行處理后,在隱形圈外部的路徑,具體 為:
[0026] 步驟5. 3. 1 :當(dāng)前關(guān)系節(jié)點(diǎn)NA的當(dāng)前直線關(guān)系邊的兩個(gè)端點(diǎn)中,一個(gè)是點(diǎn)NA,另一 個(gè)用符號Sa表示;用直線連接節(jié)點(diǎn)D和節(jié)點(diǎn)Sa ;用符號W表示點(diǎn)D到點(diǎn)Sa的距離。
[0027] 步驟5. 3. 2 :如果W < 100,則直線段DSa即為當(dāng)前直線關(guān)系邊經(jīng)過繞行處理后,在 隱形圈外部的路徑。
[0028] 步驟5. 3. 3 :如果W彡100,進(jìn)行以下處理:
[0029] 步驟Al :對線段DSa六等分,用符號Pl表示從D點(diǎn)開始的第一等分點(diǎn),用符號P2 表示從D點(diǎn)開始的第三等分點(diǎn)。將點(diǎn)P1和P 2作為3次貝塞爾曲線的2個(gè)控制點(diǎn)的初始位 置。
[0030] 步驟A2 :對3次貝塞爾曲線的2個(gè)控制點(diǎn)P1和P2沿與線段DSa垂直的方向進(jìn)行 同方向移動,移動的距離用符號L'表示,其值可通過公式(1)計(jì)算得到;移動后的點(diǎn)分別用 P3和P4表示,點(diǎn)0到線段DSa的距離小于點(diǎn)0到線段P3P4的距離。
【權(quán)利要求】
1. 一種兩類關(guān)聯(lián)層次數(shù)據(jù)的可視化方法,所述兩類關(guān)聯(lián)層次數(shù)據(jù)包括:2個(gè)層次數(shù)據(jù) 以及2個(gè)層次數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系信息,其特征在于:其具體操作步驟為: 步驟一、用兩個(gè)多叉樹分別存儲待可視化的兩類層次數(shù)據(jù)中的兩個(gè)層次數(shù)據(jù),兩個(gè)多 叉樹分別表示為多叉樹A和多叉樹B;所述多叉樹中的節(jié)點(diǎn)采用順序存儲結(jié)構(gòu)與鏈?zhǔn)酱鎯?結(jié)構(gòu)相結(jié)合的方法,具體為:采用鏈?zhǔn)酱鎯Y(jié)構(gòu)按照自頂向下的順序存儲每一層次中的第 一個(gè)節(jié)點(diǎn);對于同一層次中的節(jié)點(diǎn)采用順序存儲結(jié)構(gòu); 步驟二、對步驟一中得到的多叉樹A采用放射環(huán)算法生成空間填充布局; 步驟三、對步驟一中得到的多叉樹B采用力導(dǎo)向算法生成節(jié)點(diǎn)-鏈接布局,并使節(jié) 點(diǎn)-鏈接布局中的根節(jié)點(diǎn)位于步驟二中得到的空間填充布局的根節(jié)點(diǎn)顯示區(qū)域的中心點(diǎn)〇 位置處,確保節(jié)點(diǎn)-鏈接布局位于空間填充布局中的根節(jié)點(diǎn)顯示區(qū)域內(nèi); 步驟四、對兩類層次數(shù)據(jù)中的關(guān)聯(lián)關(guān)系進(jìn)行可視化;具體為: 步驟4. 1 :根據(jù)2個(gè)層次數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系信息,分別找到多叉樹A和多叉樹B中有 關(guān)聯(lián)關(guān)系的節(jié)點(diǎn)對,并在步驟三得到的視圖上將有關(guān)聯(lián)關(guān)系的節(jié)點(diǎn)對用直線段進(jìn)行連接, 稱所述直線段為直線關(guān)系邊;多叉樹A和多叉樹B中有關(guān)聯(lián)關(guān)系的節(jié)點(diǎn)稱為關(guān)系節(jié)點(diǎn); 步驟4.2 :重復(fù)步驟4. 1的操作,直至將2個(gè)層次數(shù)據(jù)之間的所有關(guān)聯(lián)關(guān)系信息均用直 線關(guān)系邊顯示在步驟三得到的視圖上,得到初步可視化結(jié)果。
2. 如權(quán)利要求1所示的一種兩類關(guān)聯(lián)層次數(shù)據(jù)的可視化方法,其特征在于:其還包括 步驟五對初步可視化結(jié)果進(jìn)行路徑繞行處理,得到最終可視化結(jié)果;具體操作步驟為: 步驟5. 1 :設(shè)置一個(gè)半徑為r,圓心位于點(diǎn)O的隱形圈,& <r<r2,其中,是節(jié)點(diǎn)-鏈 接布局中距離根節(jié)點(diǎn)最遠(yuǎn)的節(jié)點(diǎn)與根節(jié)點(diǎn)之間的距離;r2是空間填充布局中根節(jié)點(diǎn)顯示區(qū) 域的半徑長度; 步驟5. 2 :對步驟4生成的可視化結(jié)果中節(jié)點(diǎn)-鏈接布局中的所有關(guān)系節(jié)點(diǎn)依次做以 下處理,得到以當(dāng)前關(guān)系節(jié)點(diǎn)為其中一個(gè)端點(diǎn)的直線關(guān)系邊經(jīng)過繞行處理后,在隱形圈內(nèi) 部的路徑,具體為: 首先,找到當(dāng)前關(guān)系節(jié)點(diǎn)NA的父節(jié)點(diǎn)NB和節(jié)點(diǎn)NB的父節(jié)點(diǎn)NC;并計(jì)算通過節(jié)點(diǎn)NB和 節(jié)點(diǎn)NC的直線的斜率,用符號kB。表示;然后,過節(jié)點(diǎn)NA,做一條斜率為kB。的直線,該直線 與步驟5. 1中所述隱形圈有2個(gè)交點(diǎn),分別計(jì)算節(jié)點(diǎn)NA到2個(gè)交點(diǎn)的距離,用符號D表示 2個(gè)交點(diǎn)中距離節(jié)點(diǎn)NA近的交點(diǎn);最后,連接點(diǎn)NA和點(diǎn)D,線段NAD即為以當(dāng)前關(guān)系節(jié)點(diǎn)為 其中一個(gè)端點(diǎn)的直線關(guān)系邊經(jīng)過繞行處理后,在隱形圈內(nèi)部的路徑; 步驟5. 3 :對步驟4生成的可視化結(jié)果中節(jié)點(diǎn)-鏈接布局中的所有關(guān)系節(jié)點(diǎn)依次做以 下處理: 首先,查看當(dāng)前關(guān)系節(jié)點(diǎn)NA的直線關(guān)系邊的個(gè)數(shù),然后對當(dāng)前關(guān)系節(jié)點(diǎn)NA的每條直線 關(guān)系邊做以下處理,得到每條直線關(guān)系邊經(jīng)過繞行處理后,在隱形圈外部的路徑,具體為: 步驟5. 3. 1 :當(dāng)前關(guān)系節(jié)點(diǎn)NA的當(dāng)前直線關(guān)系邊的兩個(gè)端點(diǎn)中,一個(gè)是點(diǎn)NA,另一個(gè)用 符號Sa表示;用直線連接節(jié)點(diǎn)D和節(jié)點(diǎn)Sa;用符號W表示點(diǎn)D到點(diǎn)Sa的距離; 步驟5.3.2 :如果W< 100,則直線段DSa即為當(dāng)前直線關(guān)系邊經(jīng)過繞行處理后,在隱形 圈外部的路徑; 步驟5. 3. 3:如果W彡100,進(jìn)行以下處理: 步驟Al:對線段DSa六等分,用符號Pl表示從D點(diǎn)開始的第一等分點(diǎn),用符號P2表示 從D點(diǎn)開始的第三等分點(diǎn);將點(diǎn)P1和P2作為3次貝塞爾曲線的2個(gè)控制點(diǎn)的初始位置; 步驟A2 :對3次貝塞爾曲線的2個(gè)控制點(diǎn)P1和P2沿與線段DSa垂直的方向進(jìn)行同方 向移動,移動的距離用符號J表示,其值可通過公式(1)計(jì)算得到;移動后的點(diǎn)分別用己和 P4表示,點(diǎn)O到線段DSa的距離小于點(diǎn)O到線段P3P4的距離;
其中,L表示點(diǎn)O到線段DSa的距離; 步驟A3 :以D為初始位置,以點(diǎn)P3和P4為控制點(diǎn),以Sa為終點(diǎn)做一條3次貝塞爾曲 線,得到當(dāng)前直線關(guān)系邊經(jīng)過繞行處理后,在隱形圈外部的路徑; 經(jīng)過上述步驟的操作,即可完成路徑繞行處理,得到最終可視化結(jié)果。
【文檔編號】G06F17/30GK104462204SQ201410608209
【公開日】2015年3月25日 申請日期:2014年11月3日 優(yōu)先權(quán)日:2014年8月27日
【發(fā)明者】陳誼, 張鑫躍, 馮玉超, 陳紅倩 申請人:北京工商大學(xué)