GGR图中节点的特定比例线性图

GGR图中节点的特定比例线性图,r,ggplot2,tidyverse,ggraph,R,Ggplot2,Tidyverse,Ggraph,我正在使用杰出的GGRAPHE库进行实验,以描述一些很难描述的科学工作的相互关系。具体来说,我想展示基因座中的SNP-SNP相互作用。如果我把这些相互作用绘制成一个曲线图,在这个曲线图中,SNPs根据它们的基因位置以线性方式定位,那就太好了。ggraph库中的geom_edge_arc()美学将是理想的。但是,我不能根据位置来排列节点 这里有一个例子 library(igraph) library(tidyverse) library(ggraph) set.seed(10) nodes &l

我正在使用杰出的GGRAPHE库进行实验,以描述一些很难描述的科学工作的相互关系。具体来说,我想展示基因座中的SNP-SNP相互作用。如果我把这些相互作用绘制成一个曲线图,在这个曲线图中,SNPs根据它们的基因位置以线性方式定位,那就太好了。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)) 
库(igraph)
图书馆(tidyverse)
图书馆(ggraph)
种子(10)
节点%
过滤器(abs(交互作用)>1)

gr不确定这是否仍然相关,但有两种方法可以解决这个问题

正如@axeman所指出的,您可以使用
手册
布局,基本上将
x
y
坐标传递给它:

ggraph(gr, 
       layout = 'manual', 
       node.position = data_frame(y = rep(0, length(nodes$pos)), x = nodes$pos)) +
  geom_edge_arc(aes(edge_width=interaction))

另一种方法是超越
x
aes内部
geom\u edge\u弧
。为了能够将节点属性传递给
aes
,我们需要使用
geom\u edge\u arc2

ggraph(gr, 'linear', circular=F) +
  geom_edge_arc2(aes(edge_width=interaction, x = node.pos))

由(v0.2.0)于2018年5月30日创建。

使用布局,而不是
线性