ggplot в r: дублировать граненые результаты geom_density и geom_density_ridges - PullRequest
3 голосов
/ 04 апреля 2019

Настройки по умолчанию для ggplot2::geom_density() с фасетом и ggridges::geom_density_ridges() дают немного другие кривые. Как я могу изменить технику сглаживания в одном или другом, чтобы получить тот же результат?

library(tidyverse)
library(ggridges)

# standard density with facet by cyl ----
mtcars %>%
  ggplot(aes(x = mpg)) +
  geom_density(fill = "gray") +
  facet_wrap(. ~ factor(cyl, levels = c(8, 6, 4)), ncol = 1) +
  theme_minimal()

# density ridge with y = cyl ----
mtcars %>%
  ggplot(aes(x = mpg, y = factor(cyl))) +
  geom_density_ridges() +
  theme_minimal()
#> Picking joint bandwidth of 1.38

Создано в 2019-04-04 пакетом Представление (v0.2.1)

1 Ответ

1 голос
/ 04 апреля 2019

Вы можете использовать тот же показатель, что и geom_density().

library(tidyverse)
library(ggridges)

# standard density with facet by cyl ----
mtcars %>%
  ggplot(aes(x = mpg)) +
  geom_density(fill = "gray") +
  facet_wrap(. ~ factor(cyl, levels = c(8, 6, 4)), ncol = 1) +
  theme_minimal()

# density ridge with y = cyl ----
mtcars %>%
  ggplot(aes(x = mpg, y = factor(cyl))) +
  geom_density_ridges(stat = "density", aes(height = stat(density))) +
  theme_minimal()

Создано в 2019-04-04 пакетом Представ (v0.2.1)

Кроме того, вы можете взять пропускную способность, о которой сообщает geom_density_ridges(), и использовать ее в geom_density() (здесь bw = 1.38).

library(tidyverse)
library(ggridges)

# density ridge with y = cyl ----
mtcars %>%
  ggplot(aes(x = mpg, y = factor(cyl))) +
  geom_density_ridges() +
  theme_minimal()
#> Picking joint bandwidth of 1.38

# standard density with facet by cyl ----
mtcars %>%
  ggplot(aes(x = mpg)) +
  geom_density(fill = "gray", bw = 1.38) +
  facet_wrap(. ~ factor(cyl, levels = c(8, 6, 4)), ncol = 1) +
  theme_minimal()

Создано в 2019-04-04 пакетом представ. (v0.2.1)

Последние два графика выглядят немного по-разному, потому что они имеют разные пределы оси X.

...