#r #k-means #labeling
#r #k-означает #маркировка
Вопрос:
Какие изменения в коде требуются, если я хочу пометить только точки данных в кластере 3?
> library(datasets)
head(iris)
library(ggplot2)
ggplot(iris, aes(Petal.Length, Petal.Width, color = Species)) geom_point()
set.seed(20)
irisCluster <- kmeans(iris[, 3:4], 3, nstart = 20)
irisCluster
table(irisCluster$cluster, iris$Species)
setosa versicolor virginica
irisCluster$cluster <- as.factor(irisCluster$cluster)
ggplot(iris, aes(Petal.Length, Petal.Width, color = irisCluster$cluster)) geom_point()`
Ответ №1:
Ваш вопрос несколько неоднозначен, но если вы хотите выделить точки в определенном кластере, вы можете использовать пакет gghighlight, например
library(datasets)
library(ggplot2)
#install.packages("gghighlight")
library(gghighlight)
set.seed(20)
irisCluster <- kmeans(iris[, 3:4], 3, nstart = 20)
irisCluster
table(irisCluster$cluster, iris$Species)
iris$cluster <- as.factor(irisCluster$cluster)
ggplot(iris, aes(Petal.Length, Petal.Width, color = factor(cluster)))
geom_point()
gghighlight(cluster == 3, keep_scales = TRUE)
Ответ №2:
Вы можете включить метки как пустые, для cluster
которых не 3. Возможно, вам потребуется настроить положение меток на основе ваших фактических данных.
library(dplyr)
library(ggplot2)
iris %>%
mutate(cluster = irisCluster$cluster,
label = replace(Petal.Length, cluster != 3, '')) %>%
ggplot() aes(Petal.Length, Petal.Width, color = cluster, label = label)
geom_point() geom_text(vjust = -0.5, hjust = -0.4)