我正在尝试使用下面的示例数据制作网络,但方式要大得多
data <- structure(list(V1 = structure(c(1L, 1L, 1L, 1L, 5L, 5L, 6L, 2L,
4L, 4L, 3L, 7L), .Label = c("A", "AB", "AD", "AN", "B", "D",
"GDH"), class = "factor"), V2 = structure(c(4L, 5L, 6L, 5L, 6L,
5L, 5L, 1L, 2L, 3L, 3L, 7L), .Label = c("AC", "AD", "AG", "B",
"C", "D", "THG"), class = "factor")), .Names = c("V1", "V2"), class = "data.frame", row.names = c(NA,
-12L))
library(igraph)
g = graph.data.frame(data)
plot(g)
给了我这个
我想要的是 1-改变每个星团的颜色和形状(如THG和GDH变成蓝色)但是随意选择,因为当数据很大时逐个应用它将不适合
2-删除内部名称,而不是根据数据中的顺序放置一个数字,例如
A B
A C
A D
A C
B D
B C
D C
是1
AB AC
是2
等等
答案 0 :(得分:1)
这是一个90%的解决方案。除了组件标签之外,它会执行您想要的所有操作。
我认为您要做的是获取图表的连接组件。这可以通过{igraph}中的biconnected_components
函数获得。我用它来构建一个向量,指示每个顶点所在的组件。您可以使用vertex.xxx参数组修改顶点。下面,我使用组件编号更改颜色,形状和标签。
(已更新为包含形状)
Components = biconnected_components(g)$components
VComponent = rep(0, length(V(g)))
for(i in 1:length(Components)) { VComponent[Components[[i]]] = i }
plot(g, vertex.color=VComponent, vertex.label=VComponent,
vertex.shape = shapes()[c(1:3,8)][VComponent])
虽然可以添加其他形状,但默认形状不允许有很多变化。 This page显示了如何添加三角形和星形作为选项。我用簇号标记顶点。您可以通过指定vertex.label = NA
使顶点没有标签。但是你想在每个组件附近放置一个文本标签。我没有看到如何获取组件的位置来放置文本,所以我标记了节点。