Я использую коды по этой ссылке: http://blog.schochastics.net/post/soms-and-ggplot/ для построения моих самоорганизующихся карт в R. Однако мне нужно нечто похожее на то, что делает встроенная функция add.cluster.boundaries. Пожалуйста, помогите.
library(tidyverse) # for data wrangling
library(stringr) # for string manipulations
library(kohonen) # implements self organizing maps
library(ggforce) # for additional ggplot features
r_sample <- sample(1:nrow(fifa_tbl),2000)
fifa_tbl <- fifa_tbl[r_sample,]
glimpse(fifa_tbl)
fifa_som <- fifa_tbl %>%
select(Acceleration:Volleys) %>%
scale() %>%
som(grid = somgrid(15, 15, "hexagonal","gaussian"), rlen = 800)
som_grid <- fifa_som[[4]]$pts %>%
as_tibble %>%
mutate(id=row_number())
som_grid
som_pts <- tibble(id = fifa_som[[2]],
dist = fifa_som[[3]],
type = fifa_tbl$position2)
som_pts <- som_pts %>% left_join(som_grid,by="id")
p <- som_grid %>%
ggplot(aes(x0=x,y0=y))+
geom_circle(aes(r=0.5))+
theme(panel.background = element_blank(),
axis.ticks = element_blank(),
panel.grid = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
legend.position = "bottom")
p+geom_jitter(data=som_pts,aes(x,y,col=type),alpha=0.5)+
scale_color_manual(values=c("#F8766D","#7CAE00","#00B0B5","#C77CFF"),name="Position")
Приведенный выше код приводит к этому.
введите описание изображения здесь
Однако я хочу добавить границы кластера, используя ggplot. Пакет kohonen имеет встроенную функцию add.cluster.boundaries, которая делает это.
som.cluster <- cutree(hclust(dist(as.data.frame(fifa_som$codes)), method = "complete"), 6)
plot(fifa_som, type="mapping", pch=20,
col = c("#F8766D","#7CAE00","#00B0B5","#C77CFF")[as.integer(fifa_tbl$position2)],
shape = "round")
add.cluster.boundaries(fifa_som, som.cluster, lwd = 3, lty = 2)
Я хочу сгенерировать такие границы кластера, используя ggplot в предыдущем фрагменте кода.