我有一个矩阵如下:
jerry peter king
jerry 1 0 0
peter 0 1 0
king 1 1 1
现在我正在尝试使用下面的代码绘制一个代表矩阵的图形:
t <- read.table("../data/table.dat");
adjm <- data.matrix(t);
g1 <- graph.adjacency(adjm,add.colnames=NULL);
plot(g1, main="social network", vertex.color="white", edge.color="grey", vertex.size=8,
vertex.frame.color="yellow");
顶点的标签是id,所以我的问题是如何通过矩阵的dimnames设置顶点的标签?
我尝试过代码
vertex.label=attr(adjm,"dimnames")
但得到错误的图表。
答案 0 :(得分:10)
有两种方法可以做到这一点:
创建图形对象时,将名称指定给名为label
的顶点属性。这是plot.igraph()
在绘图时查找的默认值。
g1 <- graph.adjacency(adjm,add.colnames='label')
使用V
迭代器提取name
顶点属性,如果您使用add.colnames=NULL
,就会将其存储起来。
plot(g1, main="social network", vertex.color="white", edge.color="grey", vertex.size=8, vertex.frame.color="yellow", vertex.label=V(g1)$name)
无论哪种方式都能为您提供理想的结果。类似的东西: