ggplot可视化需求实现:替换散点为聚类编号(或添加编号至散点旁)或按聚类配置样式并添加图例
解决方案:两种需求的实现方法
需求1:替换散点为聚类编号(或添加编号标签)
你有两种灵活的实现方式:
选项A:直接用聚类编号替代散点
把geom_point换成geom_text,将聚类编号作为标签映射进去就搞定了:
library(ggplot2) library(data.table) # 你的数据集 cluster <- c(rep(c(1:4), 2)) score <- c(1.3, 7.2, 4.9, 7.5, 6.8, 4.1, 9.9, 5.8) x_axis <- c(rep("indicator1", 4), rep("indicator2", 4)) dt <- data.table(cluster, score, x_axis) # 绘制代码 ggplot() + geom_text(data=dt, aes(x=x_axis, y=score, label=cluster))
选项B:在散点旁添加聚类编号
如果想保留散点同时显示编号,可以同时叠加geom_point和geom_text,还能通过nudge_x/nudge_y调整标签位置避免重叠:
ggplot() + geom_point(data=dt, aes(x=x_axis, y=score), size=3) + # 放大散点更醒目 geom_text(data=dt, aes(x=x_axis, y=score, label=cluster), nudge_x=0.08, # 让标签向右偏移一点,避开散点 color="darkred", size=4) # 设置标签颜色和大小
需求2:按聚类设置不同形状/颜色并添加图例
只需要把cluster变量映射到shape和color的美学属性里,ggplot会自动生成图例,你也可以自定义样式:
基础版本(默认样式)
ggplot() + geom_point(data=dt, aes(x=x_axis, y=score, shape=factor(cluster), color=factor(cluster)), size=3) # 放大点的大小,让形状颜色更清晰
这里把cluster转成因子很重要,因为它是分类变量,这样ggplot会正确识别并生成分类图例。
自定义形状和颜色的版本
如果想指定自己喜欢的样式,用scale_shape_discrete和scale_color_manual就能调整:
ggplot() + geom_point(data=dt, aes(x=x_axis, y=score, shape=factor(cluster), color=factor(cluster)), size=3) + scale_shape_discrete(name="聚类编号", # 修改图例标题 breaks=c("1","2","3","4"), labels=c("聚类1","聚类2","聚类3","聚类4")) + scale_color_manual(name="聚类编号", breaks=c("1","2","3","4"), labels=c("聚类1","聚类2","聚类3","聚类4"), values=c("#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4")) # 自定义配色
内容的提问来源于stack exchange,提问作者gitcanzo
相关产品推荐
相关产品推荐

