我正在尝试使用R中的geom_net程序包绘制皮尔逊相关网络,但到目前为止仍失败。我不需要使用geom_net,而是选择了geom_net,因为与GGally的edge / vertex语法相比,最初能够在数据帧中工作似乎很直观。但是,与基本软件包替代方案相比,我确实希望使用基于ggplot的选项,因为最终目标是使用gridExtra软件包将ggplot网络与其他ggplot图形合并。颜色与显示正相关和负相关相关,并且仅在少数边缘处始终显示为错误颜色。另外,一个节点显示为未连接,我也不知道为什么。
我一直在进行故障排除,并从此处(Geomnet package - error with user-defined coordinates)和此处(Inproper show when use geom_net in R)获得有用的建议。第一个链接包含有关标签丢失/不匹配的注释,并通过将from和to向量设置为字符来解决该问题。我认为我已经通过改用字母字符解决了这个问题,但事实并非如此(在每种情况下,尽管看起来确实有所帮助,但至少如此)。第二个是节点不出现,因为顶点仅显示为“到”字符而不是“从”字符。为缺失的顶点添加一个“ from”,NA为“ to”有助于解决该问题。
library(geomnet)
from = c("a", "b", "a", "b", "c", "b", "d", "l", "b", "d", "j", "n", "b", "d", "g", "k", "n", "o", "n", "p", "m", "q", "r")
to = c("b", "c", "l", "l", "l", "m", "m", "m", "o", "o", "o", "o", "p", "p", "p", "p", "p", "p", "q", "r", NA, NA, NA )
col = c("darkgreen", "darkgreen", "darkgreen", "darkgreen", "darkgreen", "darkgreen", "darkgreen", "darkgreen", "red", "red", "red","red",
"red","red","darkgreen", "red", "red", "red", "red", "red", NA,NA, NA )
dat = data.frame(from, to, col)
dat$from = as.character(dat$from)
dat$to = as.character(dat$to)
ggplot(data = dat, aes(from_id = from,to_id = to)) + theme_net() +
geom_net(directed = FALSE, labelon = TRUE, repel = FALSE, ecolour =
dat$col, labelcolour = "white", size = 12, layout.alg =
"fruchtermanreingold")
dat
第一个也是最明显的问题是'r'节点没有通过边缘连接,但是应该通过红色边缘将其连接到'p'。
当您查看dat时,一个示例节点表明我的代码是错误的,因为'o'在图中显示了4个红色边和1个绿色,而根据dat,所有涉及'o'的行应为红色。
我将继续对此进行讨论,如果我弄清楚了会进行更新,但是希望您能为解决我的情节中的这些问题提供任何投入。
谢谢!