# NOT RUN {
library(ggrepel)
random_string <- function(len = 6) {
paste(sample(letters, len, replace = TRUE), collapse = "")
}
# Make random data.
set.seed(1001)
d <- tibble::tibble(
x = rnorm(100),
y = rnorm(100),
group = rep(c("A", "B"), c(50, 50)),
lab = replicate(100, { random_string() })
)
d$xg <- d$x
d$xg[51:100] <- d$xg[51:100] + 1
# highlight the 1/10 of observations in sparsest regions of the plot
ggplot(data = d, aes(x, y)) +
geom_point() +
geom_rug(sides = "b") +
stat_dens1d_filter(colour = "red") +
stat_dens1d_filter(geom = "rug", colour = "red", sides = "b")
# highlight the 1/4 of observations in densest regions of the plot
ggplot(data = d, aes(x, y)) +
geom_point() +
geom_rug(sides = "b") +
stat_dens1d_filter(colour = "blue",
keep.fraction = 1/4, keep.sparse = FALSE) +
stat_dens1d_filter(geom = "rug", colour = "blue",
keep.fraction = 1/4, keep.sparse = FALSE,
sides = "b")
# switching axes
ggplot(data = d, aes(x, y)) +
geom_point() +
geom_rug(sides = "l") +
stat_dens1d_filter(colour = "red", orientation = "y") +
stat_dens1d_filter(geom = "rug", colour = "red", orientation = "y",
sides = "l")
# highlight 1/10 plus 1/10 observations in high and low density regions
ggplot(data = d, aes(x, y)) +
geom_point() +
geom_rug(sides = "b") +
stat_dens1d_filter(colour = "red") +
stat_dens1d_filter(geom = "rug", colour = "red", sides = "b") +
stat_dens1d_filter(colour = "blue", keep.sparse = FALSE) +
stat_dens1d_filter(geom = "rug",
colour = "blue", keep.sparse = FALSE, sides = "b")
# selecting the 1/10 observations in sparsest regions and their complement
ggplot(data = d, aes(x, y)) +
stat_dens1d_filter(colour = "red") +
stat_dens1d_filter(geom = "rug", colour = "red", sides = "b") +
stat_dens1d_filter(colour = "blue", invert.selection = TRUE) +
stat_dens1d_filter(geom = "rug",
colour = "blue", invert.selection = TRUE, sides = "b")
# density filtering done jointly across groups
ggplot(data = d, aes(xg, y, colour = group)) +
geom_point() +
geom_rug(sides = "b", colour = "black") +
stat_dens1d_filter(shape = 1, size = 3, keep.fraction = 1/4, adjust = 2)
# density filtering done independently for each group
ggplot(data = d, aes(xg, y, colour = group)) +
geom_point() +
geom_rug(sides = "b") +
stat_dens1d_filter_g(shape = 1, size = 3, keep.fraction = 1/4, adjust = 2)
# density filtering done jointly across groups by overriding grouping
ggplot(data = d, aes(xg, y, colour = group)) +
geom_point() +
geom_rug(sides = "b") +
stat_dens1d_filter_g(colour = "black",
shape = 1, size = 3, keep.fraction = 1/4, adjust = 2)
# label observations
ggplot(data = d, aes(x, y, label = lab, colour = group)) +
geom_point() +
stat_dens1d_filter(geom = "text", hjust = "outward")
# repulsive labels with ggrepel::geom_text_repel()
ggplot(data = d, aes(x, y, label = lab, colour = group)) +
geom_point() +
stat_dens1d_filter(geom = "text_repel")
# }
Run the code above in your browser using DataLab