You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:36:05