r - 如何使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", "Simeulue", "Simeulue", "Singkil",
"Singkil", "Tamiang"), TopLang = c("Aceh/ Acheh/ Achi ", "Alas ",
"Aceh Jamee ", "Gajo/ Gayo ", "Gajo/ Gayo ", "Gajo/ Gayo ", "Gajo/ Gayo ",
"Aceh Kluet ", "ERROR TopCol out of range ", "Long Bano/ Simalur/ Simeuloe/ Simeulue/ Simulul ",
"Aceh Simeleu Barat ", "Aceh Simeleu Tengah ", "Aceh Hulu Singkil ",
"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 ",
"10_Simeulue ", "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][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] * 0.1
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"
)
你会看见
推荐阅读
- google-cloud-platform - BigQuery Arrays - 检查 Array 是否包含特定值
- flutter - 修改模型以适应 null fafety
- javascript - 如何在我的网络应用程序中跟踪当前用户?
- javascript - 为什么在 React 中满足条件时没有返回 div?
- r - 当我想在 R 中加载“rmgarch 和 rugarch”包时有什么问题?
- laravel - 问题将数组传递给字段
- wordpress - WordPress Contact-Form 7 收到的邮件内容为空
- deep-learning - 我们如何将 DocNADE 模型扩展到 DocNADE-LM 实现 N-gram 模型以及词袋?
- amazon-web-services - 将 pyspark 数据帧保存到多个 AWS S3 存储桶
- php - 如何使 openssl_decrypt 在 php 5 中工作