Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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 三元图上层内顶点的排序_R_Igraph - Fatal编程技术网

R 三元图上层内顶点的排序

R 三元图上层内顶点的排序,r,igraph,R,Igraph,我有以下数据帧: df<-data.frame(consumed= c("level1_plt1", "level1_plt2", "level1_plt3", "level1_plt3","level1_plt2","level1_plt4","level1_plt5","level1_plt5","level1_plt6","level1_plt7","level1_plt8","level1_plt9","level1_plt10","level1_plt10","level1_pl

我有以下数据帧:

df<-data.frame(consumed= c("level1_plt1", "level1_plt2", "level1_plt3", "level1_plt3","level1_plt2","level1_plt4","level1_plt5","level1_plt5","level1_plt6","level1_plt7","level1_plt8","level1_plt9","level1_plt10","level1_plt10","level1_plt1","level1_plt1","level1_plt6","level1_plt6","level1_plt9","level1_plt9","level1_plt11","level1_plt11","level1_plt11","level2_lep1","level2_lep4","level2_lep3"),consumer=c("level2_lep1","level2_lep2","level2_lep3","level2_lep2","level2_lep4", "level2_lep4","level2_lep5","level2_lep5","level2_lep6","level2_lep7","level2_lep8","level2_lep9","level2_lep10","level2_lep10","level2_lep8","level2_lep8","level2_lep1","level2_lep1","level2_lep3","level2_lep11","level2_lep12","level2_lep13","level2_lep13", "level3_pst1","level3_pst3","level3_pst4"))
df%
总结(freq=n())

我知道这个问题很老了,但我希望这个答案能帮助别人

与使用杉山布局相比,使用杉山布局可能更容易 自定义布局。这样做并不难。您已经构建了 使用
层的水平位置
变量。要获得垂直位置, 我们需要按大小(顶点度)对顶点进行排序,然后允许形状与大小成比例,因此我们将使用每个层内顶点度的累积和来设置高度。在我完成布局后,对plot的复杂调用与您的相同,只是 我用我的自定义布局交换你打给杉山的电话

MyLO = matrix(0, nrow=vcount(g), ncol=2)

## Horizontal position is determined by layer
MyLO[,1] = layer

## Vertical position is determined by sum of sorted vertex_degree
for(i in 1:3) {
    L  = which(layer ==i)
    OL = order(V(g)$vertex_degree[L], decreasing=TRUE)
    MyLO[L[OL],2] = cumsum(V(g)$vertex_degree[L][OL])
}

plot(g, 
 layout=MyLO,  edge.curved=0,
 vertex.shape=c("square","circle","square")[layer],
 vertex.frame.color = c("darkolivegreen","darkgoldenrod","orange3")[layer],
 vertex.color=c("olivedrab","goldenrod1","orange1")[layer],
 vertex.label.color="white",
 vertex.label.font=2,
 vertex.size=V(g)$vertex_degree,
 vertex.label.dist=0,
 vertex.label.degree=0, vertex.label.cex=0.5)

感谢您在G5W提供此解决方案。效果很好,并且在顶点数量发生变化时很灵活。@G5W谢谢,这帮助我得到了我所需要的东西@Danielle如果答案是你想要的,你总是可以接受的。
MyLO = matrix(0, nrow=vcount(g), ncol=2)

## Horizontal position is determined by layer
MyLO[,1] = layer

## Vertical position is determined by sum of sorted vertex_degree
for(i in 1:3) {
    L  = which(layer ==i)
    OL = order(V(g)$vertex_degree[L], decreasing=TRUE)
    MyLO[L[OL],2] = cumsum(V(g)$vertex_degree[L][OL])
}

plot(g, 
 layout=MyLO,  edge.curved=0,
 vertex.shape=c("square","circle","square")[layer],
 vertex.frame.color = c("darkolivegreen","darkgoldenrod","orange3")[layer],
 vertex.color=c("olivedrab","goldenrod1","orange1")[layer],
 vertex.label.color="white",
 vertex.label.font=2,
 vertex.size=V(g)$vertex_degree,
 vertex.label.dist=0,
 vertex.label.degree=0, vertex.label.cex=0.5)