-
Notifications
You must be signed in to change notification settings - Fork 28
Open
Labels
Description
coord_equal should result in larger overall plotting area in this example:

from https://animint-manual-en.netlify.app/ch17/ch17-k-means-clustering
library(animint2)
color.code <- c(
setosa="#1B9E77",
versicolor="#D95F02",
virginica="#7570B3",
"1"="#E7298A",
"2"="#66A61E",
"3"="#E6AB02",
"4"="#A6761D")
data.mat <- as.matrix(iris[,c("Petal.Width","Petal.Length")])
K <- 3
library(data.table)
data.dt <- data.table(data.mat)
set.seed(3)
centers.dt <- data.dt[sample(1:.N, K)]
(centers.mat <- as.matrix(centers.dt))
centers.dt[, cluster := factor(1:K)]
pairs.dt <- data.table(expand.grid(
centers.i=1:nrow(centers.mat),
data.i=1:nrow(data.mat)))
seg.dt <- pairs.dt[, data.table(
data.i,
data=data.mat[data.i,],
center=centers.mat[centers.i,])]
animint(
ggplot()+
theme_bw()+
theme_animint(width=800)+
coord_equal()+
scale_color_manual(values=color.code)+
scale_x_continuous(breaks=seq(1,7,by=0.5))+
scale_y_continuous(breaks=seq(0, 2.5, by=0.5))+
geom_point(aes(
Petal.Length, Petal.Width, color=cluster),
size=4,
data=centers.dt)+
geom_point(aes(
Petal.Length, Petal.Width),
clickSelects="data.i",
size=2,
color="grey50",
data=data.table(data.mat, data.i=1:nrow(data.mat)))+
geom_segment(aes(
data.Petal.Length, data.Petal.Width,
xend=center.Petal.Length, yend=center.Petal.Width),
size=1,
showSelected="data.i",
data=seg.dt))