可视化工具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. 微信