我不确定该主题是否符合 CrossValidated 的兴趣。你会告诉我的。
我必须研究一个图(来自图论),即。我有一定数量的连接点。我有一张桌子,上面有所有的点和每个点都依赖的点。(我还有另一张表的含义)
我的问题是:
是否有一个好的软件(或 R 包)可以轻松学习?
有没有一种简单的方法来显示图表?
我不确定该主题是否符合 CrossValidated 的兴趣。你会告诉我的。
我必须研究一个图(来自图论),即。我有一定数量的连接点。我有一张桌子,上面有所有的点和每个点都依赖的点。(我还有另一张表的含义)
我的问题是:
是否有一个好的软件(或 R 包)可以轻松学习?
有没有一种简单的方法来显示图表?
iGraph是一个非常有趣的跨语言(R、Python、Ruby、C)库。它允许您使用单向图和有向图,并且已经实现了相当多的分析算法。
除了已经说过的,对于单独的视觉化任务(以及 R 之外的),您可能有兴趣检查Gephi。
另一种选择是 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