【问题标题】:Reduce empty space in ggnet2 network plot减少 ggnet2 网络图中的空白空间
【发布时间】:2021-05-13 13:51:39
【问题描述】:

我正在使用 R 和 GGally::ggnet2 绘制下图所示的网络图。

您可以看到有几个相互断开的独立集群,这些集群非常分散,在图中留下了很多空白空间。是否可以让这些集群彼此靠近,从而更好地利用空间?

要重现的代码:

# Get datafile
wget https://www.dropbox.com/s/h4kt2fw1j4hdw3a/matrix.tsv

R
library(GGally)
library(network)

mat <- read.table('matrix.tsv')
net <- network(mat)
ggnet2(net, size= 1)

【问题讨论】:

    标签: r networking graph ggally ggnet2


    【解决方案1】:

    尝试不同的布局可能会被证明是有效的:

    library(GGally)
    library(network)
    
    ggnet2(net,
           size= 1,
           mode = "kamadakawai")
    

    或者您可以使用layout.par 参数来试验特定布局的参数

    ggnet2(net,
           size= 1,
           mode = "fruchtermanreingold",
           layout.par = list(repulse.rad = 100,
                             area = 1000))
    

    有关选项的完整列表,请参阅?sna::gplot.layout

    要找到令人愉悦的布局,您需要对选项进行一些试验,因为它们取决于图表。引用部分帮助?sna::gplot.layout

    网络可视化的顶点布局提出了一个难题—— 没有单一的“好”布局算法,并且有许多不同的 在不同的情况下,方法可能很有价值。

    set.seed(1234)
    ggnet2(net,
           size= 1,
           mode = "fruchtermanreingold",
           layout.par = list(repulse.rad = 300,
                             area = 1200))
    

    另一种选择是使用visNetwork 并在找到一个好的初始布局后手动移动一些顶点

    【讨论】:

    • 谢谢-这些好多了。然而,集群偶尔会相互交叉,这可能会产生误导。您是否知道任何专门设计用于很好地安排断开连接的集群的解决方案?
    • 对于每种特定情况,您都需要进行一些试验才能找到最好的方法。