如何解决如何使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"
)
现在我想从右侧缩短线条。谢谢!
解决方法
您可以为左侧部分的边缘增加权重,即
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"
)
给出
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。