如何在R中基于聚类分析结果绘制带var1标签的气泡图
R实现带文本标签的聚类气泡图
要实现聚类分组的气泡图,同时在气泡内显示var1的取值,用ggplot2就能轻松搞定。步骤如下:
1. 加载所需工具包
library(ggplot2) library(dplyr)
2. 处理示例数据(添加辅助位置列)
先给每个聚类内的样本分配y轴位置,避免同聚类内的气泡重叠:
set.seed(1) df <- data.frame(cluster = rep(1:3,5), var1 = sample(rep(LETTERS[1:10]),15,replace=TRUE), total = sample(30:300,15, replace=TRUE)) # 为每个cluster内的样本生成y轴位置序号 df <- df %>% group_by(cluster) %>% mutate(y = row_number()) %>% ungroup()
3. 绘制带文本标签的气泡图
ggplot(df, aes(x = factor(cluster), y = y)) + # 绘制气泡,大小由total列决定 geom_point(aes(size = total), color = "#4292c6", alpha = 0.7, shape = 21, fill = "#e6f2ff") + # 在气泡中心添加var1的文本标签 geom_text(aes(label = var1), size = 4, color = "black") + # 调整气泡大小的范围,避免过大或过小 scale_size(range = c(6, 18)) + # 设置坐标轴和图例标签 labs(x = "聚类编号", y = "", size = "Total数值") + # 美化主题,隐藏无意义的y轴刻度 theme_minimal() + theme( axis.text.y = element_blank(), panel.grid = element_blank() )
关键参数说明
shape = 21:使用带填充色的圆形气泡,让内部文本更清晰mutate(y = row_number()):给同聚类内的样本分配不同y轴位置,解决气泡重叠问题scale_size(range = c(6, 18)):根据你的数据范围调整气泡大小区间,让视觉效果更合理
内容的提问来源于stack exchange,提问作者Joep_S
相关产品推荐
相关产品推荐

