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