1

I found below example:

library(ggplot2)
library(ggridges)

ggplot(iris, aes(x = Sepal.Length, y = Species)) +
  geom_density_ridges(
    jittered_points = TRUE,
    position = position_points_jitter(width = 0.05, height = 0),
    point_shape = '|', point_size = 3, point_alpha = 1, alpha = 0.7,
  )

iris$cat <- factor(sample(1:5, size = nrow(iris), replace = TRUE))

In my application, I have an additional category, cat besides Species. Is there any way to distinguish the below rug by cat using colors?

I tried aes(points_color = cat), but the result is undesired.

Please help.

yuw444
  • 380
  • 2
  • 10

1 Answers1

2

This should do the trick

library(ggplot2)
library(ggridges)

iris$cat <- factor(sample(1:5, size = nrow(iris), replace = TRUE))

ggplot() +
  geom_density_ridges(
    data = iris, aes(x = Sepal.Length, y = Species), alpha = 0.7) +
  geom_density_ridges(
    data = iris, aes(x = Sepal.Length, y = Species, point_color = cat),
    jittered_points = TRUE, linetype = 0,
    position = position_points_jitter(width = 0.05, height = 0),
    point_shape = '|', point_size = 3, point_alpha = 1, alpha = 0
  )  +
  scale_color_viridis_d(aesthetics = "point_color")
  # scale_discrete_manual(aesthetics = "point_color",
  #                       values = c('black', 'red', 'grey', 'purple', 'blue'))

I put in two different ways to select the color values, just commented out the manual way.

enter image description here

Cullen.Molitor
  • 387
  • 1
  • 13
  • Thanks so much, it is very helpful. Specially, you point out the way to customize the color. – yuw444 Jan 19 '23 at 03:18