Добавьте маркировку / метки на участок Риджа [R / ggplot2] - PullRequest
0 голосов
/ 13 марта 2020

Я сделал график гребня, но я хотел бы добавить к нему собственные маркеры (вставьте в мой добавленный представитель). Лучшее, что я могу придумать, это добавить ярлык. Это не идеально.

Я нашел эту ссылку, что больше соответствует тому, что я хочу. но я не могу заставить пример работать для моего случая (используя fill = для построения уровней фактора).

Ниже приведен вывод с лучшим, что я мог придумать.

Спасибо.


library(tidyverse)
library(ggridges)

dfs <-
  data.frame(
    "estimate" = rnorm(300),
    "loading" = factor(rep(1:5, 60)),
    "set" = factor(rep(1:3, 100),),
    "pop" = rep(c(0.1, 0.15, 0.20, 0.05, 0.7), 60)
  )

ggplot(dfs, aes(x = estimate, y = loading, fill = set)) +
  geom_density_ridges(
    jittered_points = TRUE,
    point_shape = "|", point_size = 2, size = 0.25,
    position = position_points_jitter(height = 0), alpha = 0.6, scale = 1.2) 
#> Picking joint bandwidth of 0.395


loadsummary2 <- crossing("set" =  dfs$set, "loading" = dfs$loading)
loadsummary2$pop <- rep(c(0.1, 0.15, 0.20, 0.05, 0.7), 3)

ggplot(dfs, aes(x = estimate, y = loading, fill = set)) +
  geom_density_ridges(
    jittered_points = TRUE,
    point_shape = "|", point_size = 2, size = 0.25,
    position = position_points_jitter(height = 0), alpha = 0.6, scale = 1.2) + 
    geom_label(data = loadsummary2, aes(y = loading, x = pop), label = "*")
#> Picking joint bandwidth of 0.395

Создано в 2020-03-13 пакетом представ. (v0.3.0)

1 Ответ

0 голосов
/ 14 марта 2020

Я нашел решение с помощью кого-то еще на странице сообщества RStudio!


library(tidyverse)
library(ggridges)

dfs <-
  data.frame(
    "estimate" = rnorm(300),
    "loading" = factor(rep(1:5, 60)),
    "set" = factor(rep(1:3, 100),),
    "pop" = rep(c(0.1, 0.15, 0.20, 0.05, 0.7), 60)
  )


loadsummary2 <- crossing("set" =  dfs$set, "loading" = dfs$loading)
loadsummary2$pop <- rep(c(0.1, 0.15, 0.20, 0.05, 0.7), 3)

p <- ggplot(dfs, aes(x = estimate, y = loading, fill = set)) +
  geom_density_ridges(
    jittered_points = TRUE,
    point_shape = "|", point_size = 2, size = 0.25,
    position = position_points_jitter(height = 0), alpha = 0.6, scale = 1.2) + 
    geom_text(data = loadsummary2, 
              aes(y = loading, x = pop, label = pop),
              position=position_nudge(y= .25), 
              colour="black", 
              size=3.5)

p + geom_segment(aes(
  x = pop,
  y = as.numeric(loading) - .05,
  xend = pop,
  yend = as.numeric(loading) + .15))
#> Picking joint bandwidth of 0.437

Создано в 2020-03-14 представительный пакет (v0.3.0)

...