You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中可视化1000×1000邻接矩阵以观测聚类情况?

如何在R中鸟瞰邻接矩阵的社区聚类分布(随机块模型生成)

嘿,我完全懂你想要的那种「上帝视角」——不用靠热力图的颜色渐变,直接看清矩阵里0和1的区块分布,验证随机块模型生成的100个社区是不是真的呈现出你设置的聚类特征对吧?刚好你的SBM设置是社区内部连接概率低(0.01)、社区间连接概率反而更高(0.07),这种反常规的结构反而更需要直观的可视化来确认。

下面给你两种可复现的方法,核心都是先把节点按社区排序(这步很关键!不排序的话矩阵是乱的,根本看不到聚类),再用黑白块直接展示0/1分布:

第一步:预处理邻接矩阵(按社区排序)

首先补全你的代码,提取节点的社区归属,然后对邻接矩阵的行和列按社区排序,让同社区的节点集中在一起:

library(igraph)
# 生成你设置的SBM网络
pref.matrix <- matrix(rep(0.07, 100*100), ncol = 100)
diag(pref.matrix) <- rep(0.01, 100)
g <- sample_sbm(1000, pref.matrix = pref.matrix, block.sizes = rep(10, 100))
A <- as.matrix(as_adj(g))

# 提取每个节点的社区ID,然后排序邻接矩阵
block_ids <- membership(g)
# 按社区顺序重新排列行和列,同社区节点会被放在一起
A_sorted <- A[order(block_ids), order(block_ids)]

方法1:Base R快速鸟瞰(极简高效)

用Base R的image()函数,直接生成黑白块的矩阵视图,没有多余元素,最适合快速验证:

# 调整绘图边距,让矩阵占满整个画布
par(mar = c(0, 0, 0, 0))
# 转置+反转行是为了让矩阵显示顺序和我们平时看的一致
image(t(A_sorted)[nrow(A_sorted):1, ],
      col = c("white", "black"),  # 0用白色,1用黑色
      axes = FALSE,  # 去掉坐标轴,避免干扰
      main = "邻接矩阵鸟瞰图(按社区排序)")

运行后你会看到:白色的小方块是社区内部(因为连接少),黑色的大片区域是社区之间的连接(连接多),完美对应你设置的SBM参数。

方法2:ggplot2美化版(带社区分隔线)

如果想要更清晰的社区边界,可以用ggplot2实现,还能添加灰色分隔线标记100个社区的边界:

library(ggplot2)
library(reshape2)

# 把排序后的矩阵转成长格式,适配ggplot2
A_melted <- melt(A_sorted)
colnames(A_melted) <- c("row", "col", "value")

# 计算社区分隔的位置(每个社区10个节点)
block_breaks <- seq(10, 990, by = 10)

ggplot(A_melted, aes(x = col, y = row)) +
  geom_tile(aes(fill = factor(value)), color = NA) +
  scale_fill_manual(values = c("0" = "white", "1" = "black")) +
  # 添加社区分隔线
  scale_x_continuous(breaks = block_breaks, minor_breaks = NULL) +
  scale_y_reverse(breaks = block_breaks, minor_breaks = NULL) +
  geom_vline(xintercept = block_breaks + 0.5, color = "gray50", size = 0.2) +
  geom_hline(yintercept = block_breaks + 0.5, color = "gray50", size = 0.2) +
  # 去掉多余的主题元素
  theme_void() +
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5)) +
  labs(title = "邻接矩阵社区聚类鸟瞰(带社区分隔线)")

这个图里的灰色细线就是100个社区的边界,你能非常直观地看到每个社区内部的稀疏连接(白色)和社区之间的密集连接(黑色),完全能验证你的SBM是否生成了预期的聚类结构。

内容的提问来源于stack exchange,提问作者user321627

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:19:00