如何在ggplot2聚类图中显示数据框行名而非行号?
解决k-means聚类图显示行名标签而非行号的问题
先修正代码中的笔误
你的代码里存在两处明显错误,会导致绘图失败:
- 聚类对象是
k3,但绘图时写了k2 - 数据框名称是
data,但绘图时写了soy
核心参数设置
要让聚类图显示行名而非行号,只需在fviz_cluster函数中添加label = "rowname"参数即可。如果需要优化显示效果,还可以补充以下参数:
repel = TRUE:避免标签重叠,提升可读性show.clust.centers = TRUE:显示聚类中心位置(可选)
完整修正代码
# Open libraries library(tidyverse) library(ggplot2) library(cluster) library(factoextra) # Data data <- data.frame(label = c('K1', 'K2', 'K3', 'K4', 'K5', 'K6', 'K7', 'K8', 'K9', 'K10', 'K11', 'K12', 'K13', 'K14', 'K15', 'K16', 'K17', 'K18', 'K19', 'K20'), price = c(-0.624434769750764, -0.536599938797358, -0.644183377954367, 1.89585408542367, -0.982659691833129, -0.835733232884629, -1.10200036294203, 1.0702916454921, -0.845431392672383, -0.60717549444702, -0.772305180090069, 0.489522844465606, 0.49759411259524, 0.567213760967889, 0.41156375566992, 1.76934999015057, -0.548828699133812, -0.580000479793385, -0.517891659889718, 1.89585408542367), control = c(0.707555348515056, 0.338078487882797, 0.0631189636913435, 0.939552447051593, -0.8648694304548, -1.09400236728101, -0.478207599560573, -0.452430144167626, 0.887997536265696, -3.03017568346247, -0.607094876525316, 0.887997536265696, 1.25461023518763, 0.137587168159862, 1.0541189154647, 0.456225158433809, -0.0342625344597922, -0.549811642318762, -0.400875233381728, 0.784887714693904)) # Assign row names rownames(data) <- data$label data <- data[,-1] # Computing k-means clustering k3 <- kmeans(data, centers = 3, nstart = 25) # Produce cluster plot with row names as labels fviz_cluster(k3, data = data, label = "rowname", repel = TRUE, show.clust.centers = TRUE)
内容的提问来源于stack exchange,提问作者sneeze_shiny
相关产品推荐
相关产品推荐

