图论-分析和可视化


22

我不确定主题是否会引起CrossValidated兴趣。你会告诉我的。

我必须研究一个图(从图论)。我有一定数量的点相连。我有一张桌子,上面有所有的点,每个点都依赖于这些点。(我也有另一个表的含义)

我的问题是:
是否有一个好的软件(或R包)可以轻松学习?
有显示图的简单方法吗?


我尝试使用cran.r-project.org/web/packages/graph/vignettes/graph.pdf,但它似乎暗示“ Rgraphviz”软件包不再可用。有人有其他解决方案吗?
RockScience 2011年


1
谢谢!Graphviz完美且非常灵活,我在R中使用Rgraphviz接口使用它,并且效果很好。
RockScience

Answers:


15

iGraph是一个非常有趣的跨语言(R,Python,Ruby,C)库。它使您可以处理单向图和有向图,并且已经实现了许多分析算法。


1
(+1)看来我的回应是追随您的。由于您的回答在某种程度上强调了不同的观点(跨平台,算法),我觉得我们的回答不是那么多余,但是我可以毫无保留地删除我的回答。
chl

14

外,还有各种包可用于表示有向图和无向图,入射/邻接矩阵等。例如查看gR任务视图。

对于可视化和基本计算,除了Rgraphviz(@Rob指出在BioC上)之外,我认为igraph软件包是可靠的软件包。请注意,为了使后者正常工作,还必须安装graphviz。该IGRAPH包有一个用于创建良好的布局,就像漂亮的算法graphviz的

这是一个使用示例,从伪邻接矩阵开始:

adj.mat <- matrix(sample(c(0,1), 9, replace=TRUE), nr=3)
g <- graph.adjacency(adj.mat)
plot(g)

替代文字


感谢您的回答。使用R来安装graphviz并不容易,但是它似乎是一个不错的库
RockScience

仅供参考,我现在要做的是用R生成graphviz代码,并使用mediawiki graphviz扩展名在mediawiki中读取了它。(Rgraphviz软件包不容易安装,并且不能与R的最新版本一起使用)
RockScience 2011年

“软件包“图”已从CRAN存储库中删除。”
bartektartanus

8

除了已经说过的话,对于单独的虚拟化任务(以及在R之外),您可能有兴趣检查Gephi


8

另一个选项是statnet软件包。Statnet具有SNA中所有常用度量的功能,并且还可以估计ERG模型。如果您的数据在边缘列表中,请按以下方式读取数据(假设您的数据框标记为“ edgelist”):

net <- as.network(edgelist, matrix.type = "edgelist", directed = TRUE) #if the network is directed, otherwise: directed = FALSE

如果数据在邻接矩阵中,则将“ matrix.type”参数替换为“ adjacency”:

net <- as.network(edgelist, matrix.type = "adjacency", directed = TRUE)

statnet软件包具有一些非常好的绘图功能。要进行简单绘图,只需键入:

gplot(net)

要根据节点之间的中心度缩放节点,只需执行以下操作:

bet <- betweenness(net)
gplot(net, vertex.cex = bet)

默认情况下,gplot函数使用Fruchterman-Reingold算法放置节点,但是可以通过mode选项进行控制,例如使用MDS放置节点类型:

gplot(net, vertex.cex, mode = "mds")

或使用圆形布局:

gplot(net, vertex.cex, mode = "circle")

还有更多可能性,并且本指南涵盖了大多数基本选项。对于一个独立的示例:

net <- rgraph(20) #generate a random network with 20 nodes
bet <- betweenness(net) #calculate betweenness scores
gplot(net) #a simple plot
gplot(net, vertex.cex = bet/3) #nodes scaled according to their betweenness centrality, the measure is divided by 3 so the nodes don't become to big.
gplot(net, vertex.cex = bet/3, mode = "circle") #with a circle layout
gplot(net, vertex.cex = bet/3, mode = "circle", label = 1:20) #with node labels

(+1)从未使用过此软件包,但是您的概述建议我应该尝试一下。一见钟情。
chl

3

一个类似的问题,有人问cstheory,如果你还以特别感兴趣平面图,或书目可视化

这里已经提到了Gephi,但是在cstheory上也有人推荐了它,所以我认为这是一个不错的选择。

其他不错的选择包括:

  • Flare提供了一些非常酷的可视化工具,并为报告和论文创建了非常漂亮的图形。
  • Cyptoscape具有一些非常强大的分析和可视化工具。它对化学和分子生物学特别有用。
  • 该网站提供了许多其他不错的可视化工具和库的链接(尽管不是R)。

2

我发现NodeXL非常有用且易于使用。它是一个MS Excel模板,可轻松导入/导出图形,设置边/顶点的格式,计算某些指标,具有一些聚类算法。您可以轻松地将自定义图像用作顶点。
对我来说另一个有用的工具是Microsoft自动图形版式,它可以在线(使用支持SVG的浏览器)尝试提供良好的版式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.