11.5 其他图形:网络图的节点标签和节点间的连接

参考自《R Graphics Cookbook》

网络图的节点标签和节点间的连接


library(igraph)

library(gcookbook)

一、

#madmen中的数据太多,抽取奇数行,使用一半数据

m <- madmen[1:nrow(madmen) %% 2 == 1,]

m #查看m

madmen #查看原数据madmen


#整合成网络图所需要的的数据g

g <- graph.data.frame(m, directed = FALSE)

#查看g

g

#查看g的类型

str(g)


#提取每个节点的名称标签

V(g)$name

#查看提取的节点名称标签的类型

str(V(g)$name)

#作图

plot(g, #载入网络图的数据

layout = layout.fruchterman.reingold, #使用这种布局算法,效果与那种整个的圆圈不同

vertex.size = 10, #设置节点元素的大小

vertex.label = V(g)$name, #给节点添加标签

vertex.label.cex = 0.8, #设置标签文本的字体大小

vertex.label.dist = 0.4, #设置节点标签与节点的距离

vertex.label.color = "red") #此处必须写美式的color而不可以是英式的colour,这与ggplot2不同

##感觉上面的介绍很复杂,实际并不需要vertex.label = V(g)$name这一命令,因为此例中数据g本来就是带有标签的:下面代码和上图相同

plot(g, layout = layout.fruchterman.reingold,

vertex.size = 10,

vertex.label.cex = 0.8,

vertex.label.dist = 0.4,

vertex.label.color = "red")


二、修改图形属性的另一种方法:V()函数修改绘图对象


#使用V()$xxx直接修改绘图对象,而不用在plot中用vertex.xxx参数修改绘图对象

V(g)$size <- 10 #节点大小

V(g)$label <- V(g)$name #节点标签

V(g)$label.cex <- 0.8 #标签字体

V(g)$label.dist <- 0.4 #标签和节点的位置

V(g)$label.color <- "blue" #标签颜色


# 设置算法

g$layout <- layout.fruchterman.reingold

plot(g)



三、还可以设置节点与节点之间的连接线(或者叫做边)的样式


#查看边,结果:20/20 edges from 02aa7c6 (vertex names)(不太懂)

E(g)

#查看该数据的类型,结果:'igraph.es' int (不太懂)

str(E(g))


#设置某些边的标签

E(g)[c(2,11,19)]$label <- "M"

#查看边的标签:除了设置的,其他都是NA

E(g)$label


E(g)$color <- "blue" #设置所有边为蓝色

E(g)[c(2,11,19)]$color <- "red" #设置3条边为红色


plot(g)


四、总结

不太理解其数据结构。

编辑于 04-13

文章被以下专栏收录