R:如何改变igraph中的颜色和形状

时间:2017-01-08 12:02:11

标签: r igraph

我正在尝试使用下面的示例数据制作网络,但方式要大得多

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)

给了我这个

enter image description here

我想要的是 1-改变每个星团的颜色和形状(如THG和GDH变成蓝色)但是随意选择,因为当数据很大时逐个应用它将不适合

2-删除内部名称,而不是根据数据中的顺序放置一个数字,例如

A   B
A   C
A   D
A   C
B   D
B   C
D   C

是1

AB  AC

是2

等等

1 个答案:

答案 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])

Graph

虽然可以添加其他形状,但默认形状不允许有很多变化。 This page显示了如何添加三角形和星形作为选项。我用簇号标记顶点。您可以通过指定vertex.label = NA使顶点没有标签。但是你想在每个组件附近放置一个文本标签。我没有看到如何获取组件的位置来放置文本,所以我标记了节点。