Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在R中使用IGRAPHE在每个实验条件下执行网络分析分面?_R_Igraph - Fatal编程技术网

是否可以在R中使用IGRAPHE在每个实验条件下执行网络分析分面?

是否可以在R中使用IGRAPHE在每个实验条件下执行网络分析分面?,r,igraph,R,Igraph,我想在R中使用igraph软件包执行网络分析,比较两种不同实验条件(A和B)之间的边和顶点。 有没有一种方法可以使用igraph执行类似于刻面函数的操作 我生成了包含重复顶点和边的vertice和edge数据帧(每个实验条件一个)。 下面我报告了我的数据帧的简短版本: vertices<-data.frame(marker = c("CD3", "CD25", "pCREB", "CD4", "pST

我想在R中使用igraph软件包执行网络分析,比较两种不同实验条件(A和B)之间的边和顶点。 有没有一种方法可以使用igraph执行类似于刻面函数的操作

我生成了包含重复顶点和边的vertice和edge数据帧(每个实验条件一个)。 下面我报告了我的数据帧的简短版本:

vertices<-data.frame(marker = c("CD3", "CD25", "pCREB", "CD4", "pSTAT5", "pS6", "pRB",  "CD25", "CD3", "pSTAT4"),
cond_1 = c("A", "A", "A", "A", "B", "B", "B", "B", "B", "B"),
EMD= c(-0.83, -1.43, -0.07, -1.16, 0.08, 0.16, 0.28, 1.83,-0.37, 0.12 )
)

edges<-data.frame(marker_x = c("CD3","CD3", "CD4", "pSTAT5", "pRB", "CD25", "CD3"),
                  marker_y = c("CD25", "pCREB", "CD25", "pS6", "pS6", "pS6", "pSTAT4"),
                  cond_1 = c("A", "A", "A", "B", "B", "B", "B"),
                  DREMI=c(0.53, 0.80, 0.7, 1, 0.35,0.24, 0.44)
)

非常感谢您的帮助。

我不太清楚您想要实现什么,但如果我做对了,您希望能够将两个图并排放置,以便您可以比较它们

您可以使用
par()
像这样并排设置绘图

par(mfrow=c(1,2))35;图形参数函数(您可以修改您需要的
#(需要)
#图g
绘图(g,顶点。颜色=我的颜色,
布局=布局(g),
vertex.label.color=“黑色”,
edge.color=我的颜色,
边缘宽度=w1,
edge.arrow.size=0.5,
vertex.size=15,
vertex.label.cex=0.5)
#g3地块
绘图(g3,顶点。颜色=我的颜色,
布局=布局(g3),
vertex.label.color=“黑色”,
edge.color=我的颜色,
边缘宽度=w1,
edge.arrow.size=0.5,
vertex.size=15,
vertex.label.cex=0.5)


我知道
ggraph
有一个
facet\u graph()
函数,它的运行方式与
ggplot
中的类似,这可能是另一个解决方案。

我不太清楚您想要实现什么,但如果我做对了,您希望能够将两个图并排显示,以便能够对它们进行比较

您可以使用
par()
像这样并排设置绘图

par(mfrow=c(1,2))35;图形参数函数(您可以修改您需要的
#(需要)
#图g
绘图(g,顶点。颜色=我的颜色,
布局=布局(g),
vertex.label.color=“黑色”,
edge.color=我的颜色,
边缘宽度=w1,
edge.arrow.size=0.5,
vertex.size=15,
vertex.label.cex=0.5)
#g3地块
绘图(g3,顶点。颜色=我的颜色,
布局=布局(g3),
vertex.label.color=“黑色”,
edge.color=我的颜色,
边缘宽度=w1,
edge.arrow.size=0.5,
vertex.size=15,
vertex.label.cex=0.5)


我知道
ggraph
有一个
facet\u graph()
函数,它的操作与
ggplot
中的函数类似,这可能是另一个解决方案。

问题太广泛了,请提供示例输入数据、预期输出、当前代码。谢谢,我更新了我的欢迎帖。共享数据的图片没有太大帮助,因为我们无法使用它。您可以使用
dput
共享(部分)数据,或者创建一些虚拟数据,以便所有代码都是可复制的。更多信息请参见此处。非常感谢您的建议,我更新了我的帖子。问题太广泛了,请提供示例输入数据、预期输出、当前代码。谢谢,我更新了我的帖子。欢迎访问SO。共享数据的图片没有太大帮助,因为我们无法使用它。您可以使用
dput
共享(部分)数据,或者创建一些虚拟数据,以便所有代码都是可复制的。更多信息请看这里谢谢你的建议,我更新了我的帖子
#selected and run igraph for condition B
t<- unique(vertices$cond_1[vertices$cond_1 == "A"]) 
t
vertices2<-vertices[!vertices$cond_1 %in% t, ]

q<- unique(edges$cond_1[edges$cond_1 == "A"]) 
q
edges2<-edges[!edges$cond_1 %in% q, ]
g<-graph_from_data_frame(d=edges2, vertices=vertices2, directed=TRUE)
g

#weighted edges according to the numeric value DREMI
w1 <-E(g)$DREMI
#generated a gradient scale for vertices
my_resolution = 100
my_palette = colorRampPalette(brewer.pal(n = 9, name= "Reds"), alpha=TRUE)
my_max    = max(V(g)$EMD, na.rm=TRUE)
my_vector = V(g)$EMD / my_max
my_colors = my_palette(my_resolution)[as.numeric(cut(my_vector, breaks=my_resolution))]
#generated a gradient scale for edges
my_resolutionE = 5
my_paletteE = colorRampPalette(brewer.pal(n = 5, name= "Blues"), alpha=TRUE)
my_maxE    = max(E(g)$DREMI, na.rm=TRUE)
my_vectorE = E(g)$DREMI / my_maxE
my_colorsE = my_paletteE(my_resolutionE)[as.numeric(cut(my_vectorE, breaks=my_resolutionE))]

plot(g, vertex.color=my_colors,
     layout = layout_nicely(g), 
     vertex.label.color ="black",
     edge.color = my_colorsE,
     edge.width = w1,
     edge.arrow.size = 0.5,
     vertex.size =15,
     vertex.label.cex = 0.5)
#selected and run igraph for condition A
w<- unique(vertices$cond_1[vertices$cond_1 == "B"]) 
w
vertices3<-vertices[!vertices$cond_1 %in% w, ]

r<- unique(edges$cond_1[edges$cond_1 == "B"]) 
r
edges3<-edges[!edges$cond_1 %in% r, ]
g3<-graph_from_data_frame(d=edges3, vertices=vertices3, directed=TRUE)
g3

#weighted edges according to the numeric value DREMI
w1 <-E(g3)$DREMI
#generated a gradient scale for vertices
my_resolution = 100
my_palette = colorRampPalette(brewer.pal(n = 9, name= "Reds"), alpha=TRUE)
my_max    = max(V(g3)$EMD, na.rm=TRUE)
my_vector = V(g3)$EMD / my_max
my_colors = my_palette(my_resolution)[as.numeric(cut(my_vector, breaks=my_resolution))]
#generated a gradient scale for edges
my_resolutionE = 5
my_paletteE = colorRampPalette(brewer.pal(n = 5, name= "Blues"), alpha=TRUE)
my_maxE    = max(E(g3)$DREMI, na.rm=TRUE)
my_vectorE = E(g3)$DREMI / my_maxE
my_colorsE = my_paletteE(my_resolutionE)[as.numeric(cut(my_vectorE, breaks=my_resolutionE))]

plot(g3, vertex.color=my_colors,
     layout = layout_nicely(g3), 
     vertex.label.color ="black",
     edge.color = my_colorsE,
     edge.width = w1,
     edge.arrow.size = 0.5,
     vertex.size =15,
     vertex.label.cex = 0.5)
g0<-graph_from_data_frame(d=edges, vertices=vertices, directed=TRUE)
g0
Error in graph_from_data_frame(d = edges, vertices = vertices, directed = TRUE) : 
  Duplicate vertex names