R 描述供应网络结构
我想绘制一个供应网络结构图。我曾尝试使用igraph,但直到现在还没有得出合理的结果。示例如下所示:R 描述供应网络结构,r,plot,R,Plot,我想绘制一个供应网络结构图。我曾尝试使用igraph,但直到现在还没有得出合理的结果。示例如下所示: library(igraph) d <- read.table(text = "V1 V2 weight s1 p1 88 s3 p1 100 s2 p2 100 s3 p2 43 p1 c1 21 p1 c2 79
library(igraph)
d <- read.table(text = "V1 V2 weight
s1 p1 88
s3 p1 100
s2 p2 100
s3 p2 43
p1 c1 21
p1 c2 79
p1 c3 88
p2 c1 22
p2 c2 121
", stringsAsFactors = F, header = T)
g <- graph_from_data_frame(d, directed = T)
plot(g, layout=layout.fruchterman.reingold,
edge.width=E(g)$weight/20,
vertex.shape = "none", vertex.label.font = 2,
vertex.label.cex=1.1, edge.color="gray70")
库(igraph)
d是的,这在igraph中是可行的。制作自己的布局的一种方法。一种简单的方法是将所有“s”节点放置在x=1处,“p”节点放置在x=2处,“c”节点放置在x=3处。每种类型(s、p、c)的每个不同节点都应获得唯一的y值,以便它们不会重叠。使用示例图:
LO = matrix(0, nrow=vcount(g), ncol=2)
LO[grep("s", V(g)$name), 1] = 1
LO[grep("p", V(g)$name), 1] = 2
LO[grep("c", V(g)$name), 1] = 3
LO[,2] = ave(rep(1, vcount(g)), LO[,1], FUN = seq_along)
plot(g, layout=LO, edge.width=E(g)$weight/20,
vertex.shape = "none", vertex.label.font = 2,
vertex.label.cex=1.1, edge.color="gray70")
另外,在@Henrik的评论之后,您可以使用layout\u和\u sugiyama
。您仍然需要定义(s,p,c)-层。此外,杉山还垂直排列图层。您需要交换x和y坐标以获得水平布局
Layers = rep(0,vcount(g))
Layers[grep("s", V(g)$name)] = 3
Layers[grep("p", V(g)$name)] = 2
Layers[grep("c", V(g)$name)] = 1
LO2 = layout_with_sugiyama(g, layers=Layers)$layout
LO2 = LO2[,2:1]
plot(g, layout=LO2, edge.width=E(g)$weight/20,
vertex.shape = "none", vertex.label.font = 2,
vertex.label.cex=1.1, edge.color="gray70")
我想你在描述一个三方图。参见例如。你甚至做了轮换。谢谢。