我正在尝试使用该igraph
软件包绘制(稀疏)加权图。我目前有一个邻接矩阵,但是无法获得graph.adjacency
识别边缘权重的函数。
考虑以下随机对称矩阵:
m <- read.table(row.names=1, header=TRUE, text=
" A B C D E F
A 0.00000000 0.0000000 0.0000000 0.0000000 0.05119703 1.3431599
B 0.00000000 0.0000000 -0.6088082 0.4016954 0.00000000 0.6132168
C 0.00000000 -0.6088082 0.0000000 0.0000000 -0.63295415 0.0000000
D 0.00000000 0.4016954 0.0000000 0.0000000 -0.29831267 0.0000000
E 0.05119703 0.0000000 -0.6329541 -0.2983127 0.00000000 0.1562458
F 1.34315990 0.6132168 0.0000000 0.0000000 0.15624584 0.0000000")
m <- as.matrix(m)
要进行绘图,首先我必须将此邻接矩阵转换为正确的igraph
格式。这应该相对简单graph.adjacency
。根据我对的文档的阅读graph.adjacency
,我应该执行以下操作:
library(igraph)
ig <- graph.adjacency(m, mode="undirected", weighted=TRUE)
但是,它无法识别边缘权重:
str(ig)
# IGRAPH UNW- 6 8 --
# + attr: name (v/c), weight (e/n)
# + edges (vertex names):
# [1] A--E A--F B--C B--D B--F C--E D--E E--F
plot(ig)
如何使igraph识别边缘权重?
权weight (e/n)
重在那里,意味着有一个称为权重的边属性,它是数字。请参阅?print.igraph
。但是默认情况下不绘制它们,您需要将它们添加为edge.label。
plot(ig, edge.label=round(E(ig)$weight, 3))
要进行绘图,请确保已阅读?igraph.plotting
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句