微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使R中igraph右侧的箭头线更短?

如何解决如何使R中igraph右侧的箭头线更短?

我已经用左侧较短的线制作了一个 igraph 图,但现在我想从右侧缩短线条。这是数据:

dput(sample)
structure(list(NMSUKU = c("Aceh/ Achin/ Akhir/ Asji/ A-Tse/ Ureung Aceh","Alas","Aneuk Jamee","Gayo","Gayo Lut","Gayo Luwes","Gayo Serbe Jadi","Kluet","Sigulai","Simeulue","Singkil","Tamiang"),TopLang = c("Aceh/ Acheh/ Achi ","Alas ","Aceh Jamee ","Gajo/ Gayo ","Aceh Kluet ","ERROR  TopCol out of range ","Long Bano/ Simalur/ Simeuloe/ Simeulue/ Simulul ","Aceh Simeleu Barat ","Aceh Simeleu Tengah ","Aceh Hulu Singkil ","Tamiang "),Ethnicity = c("1_Aceh/ Achin/ Akhir/ Asji/ A-Tse/ Ureung Aceh  ","2_Alas  ","3_Aneuk Jamee  ","4_Gayo  ","6_Gayo Luwes  ","5_Gayo Lut  ","7_Gayo Serbe Jadi  ","8_Kluet  ","NA  ","10_Simeulue  ","11_Singkil  ","17_Batak Pakpak Dairi  ","12_Tamiang  ")),row.names = c(NA,-15L),class = "data.frame")

这是从左侧缩短行的代码

m <- as.matrix(replace(sample,sample == "","NA"))
g <- simplify(graph_from_edgelist(rbind(m[,1:2],m[,2:3]),directed = TRUE))
l <- layout_with_sugiyama(g)
l$layout[,2][l$layout[,2] == 1] <- l$layout[,2] == 1] * 0.1 # this is the line change the horizontal coordinates for edges on the left part
plot(g,layout = -l$layout[,2:1],edge.arrow.size = 0.1,vertex.size = 2.5,vertex.color = "grey",vertex.label.dist = 1,edge.arrow.width = 1.5,edge.width = seq(0.5,0.08),edge.lty = "solid",edge.color = "gray",vertex.label.cex = 0.7,is.rm = TRUE,vertex.label.color = "black"
)

enter image description here

现在我想从右侧缩短线条。谢谢!

解决方法

您可以为左侧部分的边缘增加权重,即

m <- as.matrix(replace(sample,sample == "","NA"))
g <- simplify(graph_from_edgelist(rbind(m[,1:2],m[,2:3]),directed = TRUE))
l <- layout_with_sugiyama(g)
l$layout[,2][l$layout[,2] == 1] <- l$layout[,2] == 1] * 1.8 # this is the line changing the horizontal coordinates for edges on the right part
plot(g,layout = -l$layout[,2:1],edge.arrow.size = 0.1,vertex.size = 2.5,vertex.color = "grey",vertex.label.dist = 1,edge.arrow.width = 1.5,edge.width = seq(0.5,0.08),edge.lty = "solid",edge.color = "gray",vertex.label.cex = 0.7,is.rm = TRUE,vertex.label.color = "black"
)

给出

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。