我正在尝试使用出色的 ggraph 库来描述一些非常难以描述的科学工作的相互关系。具体来说,我想展示一个基因位点中的 SNP-SNP 相互作用。如果我将交互作用绘制为图形的弯曲节点会非常好,其中 SNP 根据它们的遗传位置以线性方式定位。ggraph 库中的 geom_edge_arc() 美学将是理想的。但是,我不能根据位置对节点进行排序。
这是一个例子
library(igraph)
library(tidyverse)
library(ggraph)
set.seed(10)
nodes <- tibble(nodes = paste("SNP",seq(1:10)), pos = sample(c(10000:20000),10))
edges <- expand.grid(nodes$nodes,nodes$nodes) %>%
mutate(interaction = rnorm(100)) %>%
filter(abs(interaction)>1)
gr <- graph_from_data_frame(edges, vertices = nodes)
ggraph(gr, 'linear', circular=F) +
geom_edge_arc(aes(edge_width=interaction))
节点在这里均匀分布,作为“因素”。但是,我想将它们放在pos
变量指定的 x 坐标上(这反过来又成为节点的属性)。添加+ geom_node_point(aes(x=pos))
到 ggplot 对象不会导致正确的渲染。我也可以用“基本”ipgraph 来绘制,但我喜欢 ggraph 和 ggplot2,这将是一种优雅而简单的绘制方式。
亲切的问候,并提前感谢,
罗伯特