【问题标题】:plot a network with only edge values above a threshold in igraph or ggnet2在 igraph 或 ggnet2 中绘制仅边缘值高于阈值的网络
【发布时间】:2018-06-04 16:29:51
【问题描述】:

我需要从一个对称矩阵 nxn 中以图形方式表示一个网络,该矩阵由从 0 到 1 的边值组成(如 0.1、0.22、0.54 等)。我只想代表最强的边缘连接,比如 0.6 以上。

我分享我的代码:

m=as.matrix(matrix3)
g <- graph_from_adjacency_matrix(m, mode = "upper", weighted = T, diag = F)
new_graph <- induced.subgraph(m, E(m)[E(m)$weight %in% c(E(m)$weight > 0.6 )])
ggnet2(new_graph)

它不起作用。有什么建议只绘制高于 0.6 阈值的连接吗?

【问题讨论】:

标签: r igraph ggnetwork


【解决方案1】:
library(igraph)

你的数据

x <- read.table(header=T, stringsAsFactors=FALSE, text='id1 id2 id3 id4 id5 id6 id7 id8 id9 id10    id11
id1 1   0.473684    0.578947    0.368421    0.438596    0.438596    0.175439    0.403509    0.403509    0.245614    0.175439
id2 0.473684    1   0.44898 0.236842    0.347826    0.347826    0.157895    0.384615    0.36    0.236842    0.210526
id3 0.578947    0.44898 1   0.22449 0.469388    0.510204    0.244898    0.403846    0.58    0.204082    0.22449
id4 0.368421    0.236842    0.22449 1   0.26087 0.217391    0.24    0.211538    0.24    0.32    0.24
id5 0.438596    0.347826    0.469388    0.26087 1   0.73913 0.282609    0.576923    0.3 0.282609    0.043478
id6 0.438596    0.347826    0.510204    0.217391    0.73913 1   0.304348    0.653846    0.36    0.23913 0.086957
id7 0.175439    0.157895    0.244898    0.24    0.282609    0.304348    1   0.25    0.16    0.217391    0.052632
id8 0.403509    0.384615    0.403846    0.211538    0.576923    0.653846    0.25    1   0.442308    0.211538    0.173077
id9 0.403509    0.36    0.58    0.24    0.3 0.36    0.16    0.442308    1   0.22    0.34
id10    0.245614    0.236842    0.204082    0.32    0.282609    0.23913 0.217391    0.211538    0.22    1   0.217391
id11    0.175439    0.210526    0.22449 0.24    0.043478    0.086957    0.052632    0.173077    0.34    0.217391    0.12')

转换成矩阵

y <- as.matrix(x)

设置图形对象

g <- graph_from_adjacency_matrix(y, mode = "upper", weighted = T, diag = F)

删除0.6以下的边

g2 <- delete.edges(g, which(E(g)$weight <0.6))

绘制边缘大于 0.6 的图形

plot(g2)

【讨论】:

  • 谢谢,我不明白你的逻辑(设置边缘值
  • 我在 delete.edges(g, which(E(g)$weight
  • 作为另一种解决方案,我可以在开放式办公室或 excel 上操作数据(直接导入只有边缘值>0.6 的矩阵)
  • 你可能有 sna/network 库和 igraph 的重叠。只需重新启动 R 并仅加载 library(igraph) 或执行 igraph::delete.edges(g, which(E(g)$weight &lt;0.6))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 2018-11-04
相关资源
最近更新 更多