r - 如何在断开连接的图中标记连接的组件?
问题描述
我有一些由三个连通分量组成的不连通图。该图由 igraph R 中的以下命令生成:
library(igraph)
x1 <- c(1:7, 2, 8:14, 10, 15:21, 18)
x2 <- c(rep(0, 7), 1, rep(0, 7), 1, rep(0, 7), 1)
m <- cbind(x1, x2)
g <- graph.formula(1-2, 2-3, 3-4, 4-5, 5-6, 6-7, 2-8,
9-10, 10-11, 11-12, 12-13, 13-14, 14-15, 11-16,
17-18, 18-19, 19-20, 20-21, 21-22, 22-23, 20-24)
plot(g, layout = m, rescale = F, xlim = c(0.5, 21.5), vertex.size = 20,
vertex.label = NA, edge.color = "black", vertex.color = "black")
我想用一个字母标记每个断开的组件,例如“A”、“B”和“C”。或者,我想为 igraph R 中的每个连接组件制作一些字幕?
解决方案
用于components
获取集群 ID。要在每个 id 中水平居中标签,请用于tapply
计算“m”中 x 值的中点。对于垂直位置,使用min
y 值和合适的偏移量。用于text
添加标签。
m <- cbind(m, id = components(g)$membership)
xs <- tapply(m[ , "x1"], m[ , "id"], function(x) mean(range(x)))
ys <- tapply(m[ , "x2"], m[ , "id"], min)
plot(g, layout = m, rescale = F, xlim = c(0.5, 21.5), vertex.size = 20,
vertex.label = NA, edge.color = "black", vertex.color = "black")
text(xs, ys - 0.6, LETTERS[1:3])
推荐阅读
- python - 使用 BeautifulSoup 获取正确的标签(问题)
- django - 有没有办法以任何 url 模式添加 makemigration 和迁移?
- php - 两个单独的 MongoDB 集合将结果组合起来循环,没有关系
- javascript - 如果反应图中超过 2 个,则查看更多带有计数的按钮
- javascript - WebRTC - RTCDataChannel 的 onmessage 事件未触发
- heroku - Problem with deploying my first streamlit app on heroku
- javascript - 如何在switch语句中放置条件
- c++ - C ++逗号分隔的输入数组代码过早退出
- angular - 在构造函数中从服务接收数据时,接收到的数据不会显示在模板中
- database - Laravel 队列很长