У меня есть вложенный список с несколькими списками данных. Я могу нанести каждый источник данных на отдельную фигуру, но я застрял, пытаясь получить сглаживающую линию от каждого источника данных друг над другом на одной фигуре. Вот пример кода с использованием набора данных mtcars.
library(dplyr)
library(tidyr)
library(purrr)
library(ggplot2)
by_cyl <- mtcars %>%
group_by(cyl, gear) %>%
nest() %>%
rename(cyl_data = data)
by_gear <- mtcars %>%
group_by(gear) %>%
nest() %>%
rename(gear_data = data
mtcars_nest <- left_join(by_cyl, by_gear, by = "gear")
mtcars_nest <- mtcars_nest %>%
mutate(
map(cyl_data, ~ ggplot(., aes(x = wt, y = mpg)) +
geom_point() +
geom_smooth(se = TRUE, color = 'blue')
)
) %>%
rename(plot_cyl = `map(...)`)
mtcars_nest <- mtcars_nest %>%
mutate(
map(gear_data, ~ ggplot(., aes(x = wt, y = mpg)) +
geom_point() +
geom_smooth(se = TRUE, color = 'red')
)
) %>%
rename(plot_gear = `map(...)`)
mtcars_nest$plot_cyl[1]
mtcars_nest$plot_gear[1]
#How to get these two plots on one figure?
Есть мысли о том, как получить mtcars $ plot_cyl и mtcars $ plot_gear на одной фигуре? Что мне действительно нужно, так это добавить еще один список gg в тиббл mtcars_nest, чтобы в итоге я получил такую структуру, как cyl, gear, cyl_data, gear_data, plot_cyl, plot_gear и plot_cyl_gear в mtcars_nest.
> mtcars_nest
# A tibble: 8 x 6
cyl gear cyl_data gear_data plot_cyl plot_gear
<dbl> <dbl> <list> <list> <list> <list>
1 6 4 <tibble [4 × 9]> <tibble [12 × 10]> <S3: gg> <S3: gg>
2 4 4 <tibble [8 × 9]> <tibble [12 × 10]> <S3: gg> <S3: gg>
3 6 3 <tibble [2 × 9]> <tibble [15 × 10]> <S3: gg> <S3: gg>
4 8 3 <tibble [12 × 9]> <tibble [15 × 10]> <S3: gg> <S3: gg>
5 4 3 <tibble [1 × 9]> <tibble [15 × 10]> <S3: gg> <S3: gg>
6 4 5 <tibble [2 × 9]> <tibble [5 × 10]> <S3: gg> <S3: gg>
7 8 5 <tibble [2 × 9]> <tibble [5 × 10]> <S3: gg> <S3: gg>
8 6 5 <tibble [1 × 9]> <tibble [5 × 10]> <S3: gg> <S3: gg>
Я попытался добавить:
mtcars_nest <- mtcars_nest %>%
mutate(
map(cyl_data, ~ ggplot(., aes(x = wt, y = mpg)) +
# geom_point() +
geom_smooth(se = TRUE, color = 'blue'),
gear_data, ~ ggplot(., aes(x = wt, y = mpg)) +
# geom_point() +
geom_smooth(se = TRUE, color = 'red')
)
) %>%
rename(plot_cyl_gear = `map(...)`)
Но, похоже, он отображает только cyl_data синим цветом (первый источник данных в функции карты.