使用R作为网络顶点的饼图中的同心环

使用R作为网络顶点的饼图中的同心环,r,igraph,pie-chart,R,Igraph,Pie Chart,我上周确实发了这篇文章,但我没有正确解释,我希望你们中的一些人这次能帮助我 我试图画多层同心环作为图的顶点 在这里你可以找到我的简单版本,在这里你可以找到我的。请注意,边也应与顶点一起拖动 这是前者的代码: library(igraph) g=graph.empty(4) g[1,2]=T g[3,4]=T resColors=matrix(as.character(list("green","red","green","green","green","grey","grey", "green

我上周确实发了这篇文章,但我没有正确解释,我希望你们中的一些人这次能帮助我

我试图画多层同心环作为图的顶点

在这里你可以找到我的简单版本,在这里你可以找到我的。请注意,边也应与顶点一起拖动

这是前者的代码:

library(igraph)
g=graph.empty(4)
g[1,2]=T
g[3,4]=T
resColors=matrix(as.character(list("green","red","green","green","green","grey","grey",  "green","green","green","red","red","green","green","green","green","red","red","green","green")), nrow=vcount(g))
colors = list()
values = list()
for (i in 1:vcount(g)) {
   values[[i]] = rep(1, times = ncol(resColors))
   colors[i] = list(resColors[i,])
}
size=c(60,50,30,20)
plot(g, vertex.shape = "pie", vertex.pie = values, vertex.pie.color = colors, vertex.size = size)

谢谢,Nat

这可能会让你开始使用base R。如果你想让箭头接触饼图,你需要更多地使用布局和箭头

par(mar=c(1,1,1,1)); 
layout(matrix(c(0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,
                1,1,1,1,6,6,0, 
                1,2,2,5,5,6,0, 
                1,2,2,1,0,0,0, 
                1,1,1,3,0,0,0, 
                0,0,0,0,3,0,0, 
                0,0,0,0,0,3,4, 
                0,0,0,0,0,4,4), nrow=9, byrow=TRUE)); 

pie(x=c(0.4,0.3,0.2,0.1), labels = NA); 
pie(x=c(0.4,0.3,0.2,0.1), labels = NA); 

plot(x=1, y=1, type='n', axes = FALSE, xlim = c(0,100), ylim = c(0,100))
arrows(x0=0, y0=100, x1 = 80, y1 = 20, length=0.25)

pie(x=c(0.4,0.3,0.2,0.1), labels = NA); 

plot(x=1, y=1, type='n', axes = FALSE, xlim = c(0,100), ylim = c(0,100))
arrows(x0=0, y0=0, x1 = 80, y1 = 90)

pie(x=c(0.4,0.3,0.2,0.1), labels = NA);
或者,也许有一种方法可以混合和匹配来自不同软件包的绘图和图像,在这种情况下会有所帮助。请看这里:

编辑:


如果您只使用一个plot语句,而不是上面示例中的两个,并用一个不可见的plot填充整个布局,那么您可以添加任意多的箭头。重要的是,您可能会通过为每个箭头指定的x和y坐标对这些箭头的位置进行非常精细的缩放控制。您可以将饼图添加到一个绘图上,通过尝试和错误,可能会让箭头接触饼图,而不费吹灰之力。

解决方案比我想象的简单,以防其他人需要答案:

在打印之前,可以调用布局,例如fruchterman.reingold:

lay <- layout.fruchterman.reingold(g)

我不确定您想要什么,但这段代码创建了重叠的同心饼图:layoutmatrixc1,1,1,1,2,1,1,1,1,nrow=3;piex=c0.5,0.3,0.2;piex=c0.4,0.25,0.35此代码创建四个饼图,其中两个是同心的。但是,我不知道如何添加箭头:parmar=c1,1,1;布局矩阵C1,1,1,0,0,0,1,2,1,0,0,0,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,nrow=6,byrow=TRUE;piex=c0.4,0.3,0.2,0.1;piex=c0.4,0.3,0.2,0.1;piex=c0.4,0.3,0.2,0.1;piex=c0.4,0.3,0.2,0.1;另外,请查看igraph文档中的以下页面:。它主要告诉您如何为igraph创建自定义顶点形状。您可能需要创建一个自定义饼图抽屉函数,然后以某种方式将其传递给add.vertex.shape。
lay[3,] <- lay[1,]
plot(g, vertex.shape = "pie", vertex.pie = values, vertex.pie.color = colors, 
     vertex.size = size, layout = lay)