使用基于属性的布局从数据框创建图形

问题描述

我从数据框创建图形。而且我希望根据data.rw$Hamming.

中包含的汉明值来排列和移动顶点

我需要帮助

data.rw <- structure(list(g1 = c(1,1,2,3,4,5,6,7,8,9,10,11,12),g2 = c(2,12,13,13),Hamming = c(116,86,101,92,84,78,83,102,87,100,96,97,90,111,98,114,95,108,104,109,85,74,68,60,67,71,79,91,72,66,77,82,62,59,88,81,63,73,75,89,94,93,91)),row.names = c(NA,-78L),class = "data.frame")

set.seed(1234)
vertice.df <- unique(c(data.rw$name1,data.rw$name2))
g <- graph_from_data_frame(d = data.rw,vertices = vertice.df,directed = F)

plot(g)

the graph

解决方法

对于此任务,我建议使用基于距离的布局,然后想到多维缩放:

m <- get.adjacency(g,attr = "Hamming",sparse = F) 
# optionally: m <- dist(m)
l <- layout_with_mds(g,dist = m,dim = 2) 

首先从图中提取加权邻接矩阵,并将其输入到布局函数(dist = m)中。这将返回一个二维矩阵ldim = 2),您可以将其用作节点位置的布局。

plot(g,layout = l)

如果您对MDS感兴趣,请查看?cmdscale,尤其是eig参数,以便以后评估拟合优度。二维可能不足以充分反映节点之间的距离。但这是您要决定的。