В ggridges, как раскрасить точки кода, не получая несколько гребней? - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь показать точки на моем графике гребня по индексу (PASS или FAIL в данном случае). Но когда я делаю это, я получаю два гребня на группу. Мне интересно, как иметь только один гребень на группу?

Мой код и изображение вывода ниже:

library(ggplot2)
library(ggridges)
library(scales)
ggplot(dataSet, aes(x = `Vector_fails`, y = Group, fill = Group)) +
  geom_density_ridges(alpha = .1, 
                      point_alpha = 1,
                      jittered_points = TRUE,
                      aes(point_color = PassCode)) +
  labs(title = 'Vector_fails') +
  scale_x_log10(limits = c(0.09, 1000000), 
                breaks = trans_breaks("log10", function(x) 10^x),
                labels = trans_format("log10", math_format(10^.x))) +
  annotation_logticks(sides="b")

Два гребня на группу (но я хочу один)

enter image description here

1 Ответ

0 голосов
/ 26 января 2020

Если я правильно понимаю, ОП хочет построить линию ребра для каждого Group независимо от PassCode. Кроме того, точки должны быть нанесены, но закрашены значением PassCode.

. Одним из возможных решений является построение линий ребер без точек, а затем добавить второй слой, где точки нанесены, но (затем дублированные) ребра были сделаны невидимыми:

library(ggplot2)
library(ggridges)
library(scales)
ggplot(dataSet, aes(x = `Vector_fails`, y = Group, fill = Group)) +
  geom_density_ridges(alpha = .1) + # plot rigdelines without points
  geom_density_ridges(alpha = 0, # plot points with invisible ridgelines
                      color = NA, 
                      jittered_points = TRUE, 
                      point_alpha = 1, 
                      aes(point_color = PassCode)) +
  labs(title = 'Vector_fails') +
  scale_x_log10(limits = c(0.09, 1000000), 
                breaks = trans_breaks("log10", function(x) 10^x),
                labels = trans_format("log10", math_format(10^.x))) +
  annotation_logticks(sides="b")

enter image description here

Данные

Поскольку вопрос не включать никаких воспроизводимых данных, которые я пытался смоделировать ОП dataSet

nr <- 1000L
set.seed(1L)
dataSet <- data.frame(
  Vector_fails = sample(9L, nr, TRUE) * 10^sample(c(0:1, 4:5), nr, TRUE),
  Group = sample(c("Normal", "Trial 1", "Trial 2"), nr, TRUE, prob = c(0.8, 0.1, 0.1)),
  PassCode = sample(c("PASS", "FAIL"), nr, TRUE)
)
...