在R中提取fviz_clust绘图坐标,用ggplot自定义K-means聚类图
提取fviz_cluster绘图的坐标用于ggplot自定义
先保存fviz_cluster生成的ggplot对象,再用
ggplot_build()解析它的底层数据:# 保存聚类图对象 cluster_plot <- fviz_cluster(kmeans_sag, pcScores_sag[, -5], ellipse.type = "norm") # 解析绘图数据 plot_data <- ggplot_build(cluster_plot)$data提取数据点坐标:
plot_data[[1]]是散点数据,包含PCA主成分轴的x/y坐标、聚类分组cluster等字段,可直接作为ggplot的数据源。提取聚类椭圆(多边形)坐标:
plot_data[[2]]是椭圆的多边形顶点数据,包含x/y坐标、分组group字段,用于绘制自定义聚类边界。自定义ggplot示例:
library(ggplot2) # 拆分数据 point_df <- plot_data[[1]] ellipse_df <- plot_data[[2]] # 自定义绘图 ggplot() + geom_polygon(data = ellipse_df, aes(x = x, y = y, group = group, fill = factor(group)), alpha = 0.2) + geom_point(data = point_df, aes(x = x, y = y, color = factor(cluster), shape = factor(cluster)), size = 3) + # 手动设置颜色、形状 scale_color_manual(values = c("#FF6B6B", "#4ECDC4", "#45B7D1")) + scale_fill_manual(values = c("#FF6B6B", "#4ECDC4", "#45B7D1")) + scale_shape_manual(values = c(16, 17, 18)) + labs(x = "PC1", y = "PC2", color = "聚类分组", fill = "聚类分组", shape = "聚类分组") + theme_minimal()
内容的提问来源于stack exchange,提问作者Benjamin Colbert
相关产品推荐
相关产品推荐

