現(xiàn)有方法是用Matlab生成鄰接矩陣然后導(dǎo)入到Gephi畫圖穗熬,里面有手工成分镀迂,另外節(jié)點布局只能依賴Gephi的自帶函數(shù)。我要做的就是實現(xiàn)完全自定義唤蔗,和完全自動化探遵。
也就是說窟赏,完全不依靠可視化軟件,模型自己建箱季,布局自己畫......
本來打算今天寫具體的實現(xiàn)過程和技術(shù)細節(jié)涯穷,但一直沒抽出時間,所以決定在公交上寫一下完成的工作還有未完成的想法藏雏。
首先是文本處理拷况,編碼轉(zhuǎn)換,根據(jù)標點斷句掘殴,字符分割赚瘦,沒什么好說的。
接下來是模型建立奏寨,使用Networkx儲存字符節(jié)點起意,根據(jù)字符的出現(xiàn)頻率進行節(jié)點排序;節(jié)點之間建立加權(quán)有向邊病瞳。
然后是布局函數(shù)揽咕,這項工作耗時最多。Networkx畫圖極其簡陋套菜,箭頭丑亲善,節(jié)點和邊的顏色大小只能為單一值,圖像布局雜亂笼踩,所以所有畫圖過程以及布局函數(shù)全部手工寫逗爹,將Networkx的內(nèi)部封裝方法徹底改造了一番。布局設(shè)計是根據(jù)節(jié)點重要性畫n個同心圓嚎于,首先將所有節(jié)點分組掘而,組長差為6(圓周對半徑求導(dǎo)),然后對每組節(jié)點根據(jù)極坐標轉(zhuǎn)換賦xy值于购,最后有向邊也根據(jù)節(jié)點xy值來賦值袍睡。
接下來畫圖,節(jié)點大小肋僧、文字大小和邊的寬度斑胜、透明度均根據(jù)各自的權(quán)重賦值,也是要手動去改原來的單一值嫌吠,改為數(shù)組止潘。根據(jù)布局畫圖并保存或顯示。統(tǒng)計出入度辫诅。
最后是用Django實現(xiàn)web交互凭戴,也挺麻煩。
現(xiàn)在算是完成了主要工作炕矮,耗時兩個下午加一個晚上么夫。還有一些細節(jié)需要摳者冤,文本提交接下來改為文檔提交,將關(guān)聯(lián)度較大的字列出档痪,應(yīng)該導(dǎo)出個鄰接矩陣方便以后進一步的工作涉枫。