# NOT RUN {
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() })
)
# filter (and here highlight) 1/10 observations in sparsest regions
ggplot(data = d, aes(x, y)) +
geom_point() +
stat_dens2d_filter(colour = "red")
# filter observations not in the sparsest regions
ggplot(data = d, aes(x, y)) +
geom_point() +
stat_dens2d_filter(colour = "blue", invert.selection = TRUE)
# filter observations in dense regions of the plot
ggplot(data = d, aes(x, y)) +
geom_point() +
stat_dens2d_filter(colour = "blue", keep.sparse = FALSE)
# filter 1/2 the observations
ggplot(data = d, aes(x, y)) +
geom_point() +
stat_dens2d_filter(colour = "red", keep.fraction = 0.5)
# filter 1/2 the observations but cap their number to maximum 12 observations
ggplot(data = d, aes(x, y)) +
geom_point() +
stat_dens2d_filter(colour = "red",
keep.fraction = 0.5,
keep.number = 12)
# density filtering done jointly across groups
ggplot(data = d, aes(x, y, colour = group)) +
geom_point() +
stat_dens2d_filter(shape = 1, size = 3, keep.fraction = 1/4)
# density filtering done independently for each group
ggplot(data = d, aes(x, y, colour = group)) +
geom_point() +
stat_dens2d_filter_g(shape = 1, size = 3, keep.fraction = 1/4)
# density filtering done jointly across groups by overriding grouping
ggplot(data = d, aes(x, y, colour = group)) +
geom_point() +
stat_dens2d_filter_g(colour = "black",
shape = 1, size = 3, keep.fraction = 1/4)
# label observations
ggplot(data = d, aes(x, y, label = lab, colour = group)) +
geom_point() +
stat_dens2d_filter(geom = "text")
# repulsive labels with ggrepel::geom_text_repel()
ggrepel.installed <- requireNamespace("ggrepel", quietly = TRUE)
if (ggrepel.installed) {
library(ggrepel)
ggplot(data = d, aes(x, y, label = lab, colour = group)) +
geom_point() +
stat_dens2d_filter(geom = "text_repel")
}
# }
Run the code above in your browser using DataLab