自己動手寫可視化軟件(代碼已開源)


  一年多前,那時候我還在實習,正好上一個項目接近的尾聲,緊隨而來的就是一個大數據一體化的項目,包括了數據的采集、處理、計算、整合以及數據展示等。

  而可視化這塊,在前期就落在了我的頭上,雖然這款開源的小工具最終沒有作為大數據可視化的解決方案,但是這是一個自己完完整整,一步一個腳印寫起來的,從中學到的東西自然不僅限於這款工具,還有查找資料的方法、解決問題的思路等等,總得來說都是一段不錯的學習經歷。

  時隔一年多,我還是想着把代碼開源出來:

  • 一來是因為這是群友和一些網友的呼聲;
  • 二來是目前的工作與可視化方向也漸行漸遠,放出代碼算是對過去的一個總結或是告別;
  • 最后也是希望通過把代碼放出來,為別人提供一點思路,也為自己提供一個對外交流的窗口。

不管代碼好壞,擁抱開源,這也是一種學習的態度。

 

  之前在寫這款工具的時候,有不時的在可視化系列里記錄下了自己的心得或是遇到的問題以及取得的成果^^

    《可視化工具solo show

    《可視化工具solo show-----Processing Prefuse show

    《可視化工具solo show-----Prefuse自帶例子GraphView講解

    《漫談可視化Prefuse(一)---從SQL Server數據庫讀取數據

    《漫談可視化Prefuse(二)---一分鍾學會Prefuse

    《漫談可視化Prefuse(三)---Prefuse API數據結構閱讀有感

    《漫談可視化Prefuse(四)---被玩壞的Prefuse API

    《漫談可視化Prefuse(五)---一款屬於我自己的可視化工具

    《漫談可視化Prefuse(六)---改動源碼定制邊粗細

 

  這款小工具主要是基於Prefuse的工具庫來寫的,不同於gephi這樣的既有對外暴露的API,又有集成的工具gephi軟件,Prefuse提供了支持多種布局,支持不同的數據結構,能夠實時交互,文本索引,通過sql與數據庫連接等等功能豐富的接口。但是我們在Prefuse的官網上並沒有看到一個完整的工具或者軟件,這里的小工具是將這些支持的功能做一個整合並加入一些常用的需求,從而就形成了現在工具的樣子。

 

代碼托管在Github上

   https://github.com/DMinerJackie/prefuse-visualization-tool

  同時還有一些文檔在resource目錄下面

 

已經實現的功能舉例

  • 工具主要分為四大塊,頂端的菜單欄,左側的信息欄,中間的圖形展示區,右側的參數調整區(還沒實現);

 

  • 當中間的圖像 去沒有圖形也就是沒有導入數據時,菜單欄中的部分按鈕為灰色不可用,只有導入數據才變為可用狀態;

 

  • 選擇導入后,信息展示區就會顯示出節點/邊的個數和條數,以及圖形的性質是有向還是無向等;

 

  • 點擊文件->打開,選中數據文件后會彈出圖形配置信息,比如可以展示位有向/無向/混合圖,可以選擇要展示的節點標簽,這些都是在數據文件中有配置;

  • 支持多種布局算法,具體可參看前幾篇展示效果;
  • 對於節點上的標簽可以選擇顯示或不顯示,如果有加入圖片信息,還可以顯示圖片(關於在節點上顯示圖片,可以參看項目中的例子);
  • 可以改變節點的形狀,如矩形,圓形等;
  • 支持邊直線曲線的顯示(在工具中還沒有實現,可以參看前幾篇中的demo);
  • 可以根據數據文件中配置邊的權重展示不同粗細的邊;
  • 支持懸浮高亮和近鄰高亮(這里鼠標懸浮在Alan節點上,其高亮為紅色,而與Alan相鄰的如Non也會橙色高亮顯示);
  • 支持適應屏幕顯示,點擊控制器->適應屏幕顯示,就會將圖形縮放到能夠在圖像展示區顯示為止

 

操作展示

  • Part 1:

 

  • Part 2:

 

  • Part 3:

 

注意事項

  • 其中有些test有hard code,如果無法運行,請檢查是否有hard code比如讀取配置文件的路徑
  • 有些功能需要做實現准備,比如連接數據庫的功能,需要你本機某個數據源比如sql server中或者mysql,並在其中按照要求興建數據,在工具中配置好后才可以同步數據庫中的數據並顯示
  • 有些功能模塊截至目前還沒有具體的實現,比如"Action配置"模塊
  • 載入圖形時,有時候會有重影的現象,記得這是開發中期后才遇到的情況
  • 工具中的右側面板參數調整還沒有實現

 

限於個人水平有限,有問題歡迎不吝賜教,或者在github上提出issue。

 

====================我是更新線=====================

根據Hongten的建議,這里找了一個皮膚jar,里面提供一些皮膚,試了下,都比原來的裸奔好看,挑幾個:

 

如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!如果您想持續關注我的文章,請掃描二維碼,關注JackieZheng的微信公眾號,我會將我的文章推送給您,並和您一起分享我日常閱讀過的優質文章。




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM