You need to enable JavaScript to run this app. R语言igraph绘图如何仅缩短右侧箭头连线的长度?
优惠活动
大模型
产品
解决方案
定价
更多

R语言igraph绘图如何仅缩短右侧箭头连线的长度?

igraph 有向网络图右侧连线缩短修改方案

实现逻辑

你当前使用的layout_with_sugiyama生成的布局中,l$layout[,2]对应的是三层节点的水平位置:

  • 取值1:最左侧的NMSUKU层节点
  • 取值2:中间的TopLang层节点
  • 取值3:最右侧的Ethnicity层节点

你原有代码通过修改取值为1的坐标压缩了左侧连线,要压缩右侧(中间层到最右层)的连线,只需修改取值为3的坐标,将最右层向中间层靠拢即可。

调整后完整代码

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 
# 下方代码用于缩短右侧连线,末尾的0.2是缩放系数,数值越小连线越短
l$layout[, 2][l$layout[, 2] == 3] <- 2 + (l$layout[, 2][l$layout[, 2] == 3] - 2) * 0.2
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"
)

参数说明

右侧连线的缩放系数可根据实际显示需求调整:比如将0.2改为0.5,就是把右侧连线缩短为原长度的一半;改为0.1就是缩短为原长度的10%。

内容的提问来源于stack exchange,提问作者Kian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 01:57:04