我使用 ggplot2 包為我的資料創建了一個散點圖。由于我的資料有大量點,我將用已經可用的小資料集解釋我的問題。考慮這個散點圖:
ggplot(mtcars, aes(x=wt, y=mpg)) geom_point()

我想使用 k 表示聚類來聚類這些資料點,然后在同一個散點圖(如上所示)上顯示聚類,而不是新的降維圖?我怎樣才能做到這一點?
uj5u.com熱心網友回復:
一種選擇是使用ggforce::geom_mark_ellipse在集群周圍繪制一些橢圓:
library(ggplot2)
library(ggforce)
km.mtcars <- kmeans(scale(mtcars), centers = 3)
mtcars2 <- mtcars
mtcars2$cluster = km.mtcars$cluster
ggplot(mtcars2, aes(x=wt, y=mpg))
geom_point()
ggforce::geom_mark_ellipse(aes(fill = factor(cluster)))

uj5u.com熱心網友回復:
這是使用factoextra包的替代方法:
library(factoextra)
df <- mtcars %>%
select(x = wt, y = mpg)
# Compute k-means with k = 3
set.seed(123)
res.km <- kmeans(scale(df[, -5]), 3, nstart = 25)
res.km$cluster
fviz_cluster(res.km, data = df[, -5],
palette = c("steelblue", "gold", "limegreen"),
geom = "point",
ellipse.type = "convex",
ggtheme = theme_bw()
)

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529682.html
