可視化工具solo show


     輾轉一圈還是回到了我魂牽夢繞的可視化上來了。

     在Gephi+Netbeans上折騰了將近一個星期后,我深深的體會到個人對於代碼的駕馭能力尚有提升的空間^_^,路很長,方向很重要,三思而行。

   轉載請標明出處:http://www.cnblogs.com/bigdataZJ/p/VisualizationSoloShow.html

     之前一個星期的研究體會如下:

     1.作為一個可視化方向入門級菜鳥來說,靠一個人啃下gephi這個已經相對成熟的軟件源碼來說確有心有余而力不足之感。

     2.Gephi是一個優秀的可視化軟件,源於它的優秀的框架設計和代碼編寫。整個項目基於Netbeans platform開發,面向接口編程,模塊之間耦合度低,體現了高內聚低耦合的程序設計思想。

     3.曾試圖通過Welcome Screen、UI Components、Project API、Import API、Graph API、Layout API等模塊進行突破,從而拿下Gephi。可是最終都是陷入嚼之"無味",棄之可惜的窘境。

       當然,期間也認知了一些志同道合之人,相互探討,交流心得,也不枉那一個星期的付出。

 

     事隔一段時間,着手其他項目。最近又重返可視化,此次決定先擴寬自己的視野,做到貨比三家,摒棄一見傾心、再見傷心的路子。一下是我近幾日看到的一些軟件介紹以及自己的總結情況:(備注:我的目標是尋找一個開源的,最好是基於Java開發的軟件、庫、插件)

      

     1.Pajek是免費但不開源。因為它又同時配備了R軟件接口和SPSS軟件接口,把Pajek的數據探索功能與R軟件的統計功能結合,就已經基本符合網絡分析技術的應用需求。

 

     2.netdraw一般用來進行可視化操作,而ucinet一般用來對接點進行中心性分析,聚類分析,核心與邊緣分析,位置與角色分析等,現在ucinet軟件中集成了netdrow這個可視化工具,一般在ucinet中進行網絡分析,在netdrow中進行可視化,兩者相輔相成。

 

     3.UCINET網絡分析集成軟件包括一維與二維數據分析的NetDraw,還有正在發展應用的三維展示分析軟件Mage等,同時集成了Pajek用於大型網絡分析的Free應用軟件程序。利用UCINET軟件可以讀取文本文件、KrackPlot、Pajek、Negopy、VNA等格式的文件。它能處理32 767個網絡節點。當然, 從實際操作來看,當節點數在5000~10000之間時,一些程序的運行就會很慢。

社會網絡分析法包括中心性分析、子群分析、角色分析和基於置換的統計分析等。

 

     4.NodeXL的使用非常簡單。它是作為一個Excel模板安裝的。安裝完成后打開Excel,根據NodeXLGraph新建一個xls文檔就可以使用了。其中比較亮點的功能是可以用圖片作為圖的頂點。這就帶來了很大的靈活性。

點點鼠標我們就可以方便的對數據進行批量處理:排序,過濾,繪制各種圖表,而不用考慮如何編寫代碼,如何處理GUI事件。值得一提的是,NodeXL還支持多種輸入格式,除了簡單的復制粘貼外,還可以直接導入流行的UCINET, GraphML的格式文件,或者最簡單的鄰接矩陣等。它甚至還提供了自動收集twitter,flickr上的數據並繪制圖表的操作選項。

當然,NodeXL還提供了高度的可編程性。在.NET中我們可以方便的調用它在Excel中體現的全部功能。事實上,Excel的模板只是它的一個wrapper而已。

 

     5.Python也可以做可視化編程,但是相對來說畫面較粗糙,互動性弱。

 

     6.R很強大,為什么還要學習其他工具呢?為什么不干脆用R來做所有事情?原因有以下幾方面, R是在你的桌面上運行的,所以它不太適合於動態網頁。存儲為圖片然后發布到網頁上並不是問題,但這一過程不會自動完成。你也可以通過網頁來動態生成圖片,但截至目前,R的這一功能還不是特別強大,無法比JavaScript等網頁原生工具。在創建可交互圖形或動畫方面,R也不是特別擅長。同樣,盡管也可以用R來實現,但還有其他更方便的途徑,比如Flash或者Processing。

 

     7.Processing 的最初目標是開發圖形的 sketchbook 和環境,用來形象地教授計算機科學的基礎知識。之后,它逐漸演變成了可用於創建圖形可視化專業項目的一種環境。

Processing 是用 Java 編程語言寫的。

 

該網站列舉了50多種的可視化工具,具體可以看到每個工具所用語言、開發環境、所屬組織、是否開源等信息http://selection.datavisualization.ch/

其中用Java開發的有:Cytoscape、Gephi、Many Eyes、OpenRefine、Prefuse、Processing、Unfoldind。還有一個重要的工具:R

     8.Cytoscape:

     Cytoscape is an open source software platform for visualizing molecular interaction networks and biological pathways and integrating these networks with annotations, gene expression profiles and other state data. Although Cytoscape was originally designed for biological research, now it is a general platform for complex network analysis and visualization.   Cytoscape coredistribution provides a basic set of features for data integration, analysis, and visualization.   Additional features are available as Apps (formerly calledPlugins).   Apps are available for network and molecular profiling analyses, new layouts, additional file format support, scripting, and connection with databases. 

     Cytoscape是一款開源可視化軟件,其可用於整合模塊化網絡和生物科學聯系網絡圖的繪制。雖然起初是為生物研究設計,但現在也可以用於復雜網絡的分析和可視化呈現。其也可以通過插件擴展豐富自身的功能。

     Cytoscape的部分源碼可以在https://github.com/cytoscape/cytoscape-impl 中下載到。------部分源碼可得(GitHub上有源碼)

 

     9.Many Eyes:

     IBM的,資料甚少。。。

 

     10.OpenRefine:

     之前由Google提供支持,自2012年轉交給志願者維護。其可以清洗數據,將一種數據格式轉換為另一種格式。OpenRefine可以支持多種的Web Services數據

Openrefine:免費開源數據清洗工具是一個幫助用戶轉換數據集的工具,優化數據的質量以便於在真實場景中使用,你的數據是雜亂無章的。錯誤會散步到你的大數據集中,無論你有多么細心,錯誤總是存在。數據量越大,錯誤越多。正確且清晰地認識以上的現狀,於是有了數據質量的說法。

     OpenRefine就是這樣的IDT工具,可以觀察和操縱數據的工具。它類似於傳統Excel的表格處理軟件,但是工作方式更像是數據庫,以列和字段的方式工作,而不是以單元格的方式工作。這意味着OpenRefine不僅適合對新的行數據進行編碼,而且功能還極為強大。

     所以說,其更強調數據清洗、篩選、分析等功能,可視化並不突出。

     OpenRefine (formerly Google Refine) is a powerful tool for working with messy data: cleaning it; transforming it from one format into another; extending it with web services; and linking it to databases like FreeBase.

Please note that since October 2nd, 2012, Google is not actively supporting this project, which has now been rebranded to OpenRefine. Project development, documentation and promotion is now fully supported by volunteers. Find out more about the history of OpenRefine and how you can help the community.------源碼可得(GitHub上有源碼)

 

     11.Prefuse:

      Prefuse is a set of software tools for creating rich interactive data visualizations. The original prefuse toolkit provides a visualization framework for the Java programming language. The Prefuse flare toolkit provides visualization and animation tools for ActionScript and the Adobe Flash Player.

Prefuse supports a rich set of features for data modeling, visualization, and interaction. It provides optimized data structures for tables, graphs, and trees, a host of layout and visual encoding techniques, and support for animation, dynamic queries, integrated search, and database connectivity. Prefuse is written in Java, using the Java 2D graphics library, and is easily integrated into Java Swing applications or web applets. Prefuse is licensed under the terms of a BSD license, and can be freely used for both commercial and non-commercial purposes.

     Prefuse是采用Java語言開發的數據可視化工具。其支持豐富的數據模型、可視化、交互的特性,具有表格、樹形、一系列的布局和動畫的效果。Prefuse使用Java的2D圖形庫編程,能夠有效集成到Java Swing的應用程序和Applets中,並且是free to use。------源碼可得(GitHub上有源碼)

 

     12.Unfolding:

     Unfolding is a library to create interactive maps and geovisualizations in Processing and Java

     Unfolding主要是一個可以繪制交互性地圖的可視化庫,可以繼承到Processing和Java(Eclipse)中。------源碼可得(GitHub上有源碼)

 

     13.Tableau Public:

     Tableau public是一款桌面可視化工具,用戶可以創建自己的數據可視化,並能將數據可視化發布到網頁上。其開發是用js,目前只能在windows平台上使用。雖然是免費使用,但是大多側重圖表的顯示,在社交網絡方面的展現能力一般。

 

     14.R:

     R語言是主要用於統計分析、繪圖的語言和操作環境。其可以與hadoop分布式計算結合。

通過http://blog.sina.com.cn/s/blog_891b79fe01015oxw.html 網頁上給出的例子可以看出,R也支持圖形化展示,可以互動並且有數種布局方式。代碼如下:

 1 library(igraph)
 2 
 3 load("C:\\Users\\Administrator\\Desktop\\termDocMatrix.rdata")
 4 
 5 termDocMatrix[5:10,1:20]
 6 
 7 termDocMatrix <- as.matrix(termDocMatrix)
 8 
 9 termDocMatrix[termDocMatrix>=1]
10 
11 termMatrix <- termDocMatrix %*% t(termDocMatrix)
12 
13 termMatrix[5:10,5:10]
14 
15 g <- graph.adjacency(termMatrix, weighted=T, mode = "undirected")
16 
17 g <- simplify(g)
18 
19 V(g)$label <- V(g)$name
20 
21 V(g)$degree <- degree(g)
22 
23 set.seed(3952)
24 
25 layout1 <- layout.fruchterman.reingold(g)
26 
27 plot(g, layout=layout.kamada.kawai)
28 
29 tkplot(g, layout=layout.kamada.kawai)

 

執行該段代碼的前提是要先加載igraph包,通過install.packages(“igraph”)實現。

關於各個軟件的絢麗的圖示和強大的展示效果我就不一一截圖了,可以到各自網站上了解,或者以http://selection.datavisualization.ch/入口了解亦可。

 

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

  

友情贊助

如果你覺得博主的文章對你那么一點小幫助,恰巧你又有想打賞博主的小沖動,那么事不宜遲,趕緊掃一掃,小額地贊助下,攢個奶粉錢,也是讓博主有動力繼續努力,寫出更好的文章^^。

    1. 支付寶                          2. 微信

                      


免責聲明!

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



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