Skip to content

Alternative to rel_min_height to truncate density plots to range of data? #92

@Aariq

Description

@Aariq

When rel_min_height = 0 (default) tails are drawn to the range for all datasets (I assume). I use rel_min_height primarily to make it so those lines are more representative of the range of the data, but why not just use the actual range of the data to truncate the tails instead of fiddling with rel_min_height? Would this be possible?
I'm imagining something similar to the trim argument for geom_violin()

library(ggplot2)
library(ggridges)
#> Warning: package 'ggridges' was built under R version 4.3.2
a <- rnorm(1000, 0)
b <- rnorm(1000, 100)
df <- data.frame(
  group = rep(c("A", "B"), each = 1000),
  x = c(a, b)
)

ggplot(df, aes(x = x, y = group)) +
  geom_density_ridges()
#> Picking joint bandwidth of 0.215

#maybe this looks better?
ggplot(df, aes(x = x, y = group)) +
  geom_density_ridges(rel_min_height = 0.001)
#> Picking joint bandwidth of 0.215

#or maybe this?
ggplot(df, aes(x = x, y = group)) +
  geom_density_ridges(rel_min_height = 0.000001)
#> Picking joint bandwidth of 0.215

#but we know the actual range—can that be used to truncate the tails?
range(a)
#> [1] -3.121805  3.351301
range(b)
#> [1]  97.24957 103.07265

Created on 2024-02-09 with reprex v2.0.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions