如何使用R可视化邻接矩阵中的不同簇?可以使用ggplot吗?下面是我的邻接矩阵的一个示例,称为Dissimiliarity_matrix。
V1 V2 V3 V4 V5
0.00 0.00 0.36 0.36 0.69
0.00 0.00 0.36 0.36 0.69
0.36 0.36 0.00 0.00 0.33
0.36 0.36 0.00 0.00 0.33
0.69 0.69 0.33 0.33 0.00
您可以从graph_from_adjacency_matrix
包中尝试igraph
:
plot(igraph::graph_from_adjacency_matrix(floor(as.matrix(dissimilarity_matrix) * 3)))
附录
根据OP的评论,还有另一种方法可以帮助寻找聚类,即绘制矩阵。为此,最好首先将相异性矩阵转换为数据帧,每个像元每行包含一行,每行给出行名,列名和该像元的值:
vars <- colnames(dissimilarity_matrix)
df <- data.frame(expand.grid(list(vars, vars)), as.vector(dissimilarity_matrix))
names(df) <- c("Rows", "Columns", "Value")
然后将很容易使用geom_tile
进行绘制。在这里,我首先将值转换为因子水平,以允许应用合适的填充色标。我还排除了所有值为零的单元格,以便更清晰地显示集群:
df$Value <- factor(df$Value, levels = rev(sort(unique(df$Value))))
ggplot(df[df$Value != 0, ], aes(x = Rows, y = Columns, fill = Value)) +
geom_tile(colour = "black") +
theme_bw() +
scale_fill_brewer(palette = 1, direction = -1) +
scale_x_discrete(drop = FALSE) +
scale_y_discrete(drop = FALSE) +
theme(
axis.text.x = element_text(angle = 270, hjust = 0),
aspect.ratio = 1)