从嵌套数据框中提取 ggplot
Extract ggplot from a nested dataframe
我使用分组数据框和地图函数创建了一组 ggplot,我想提取这些图以便能够单独操作它们。
library(tidyverse)
plot <- function(df, title){
df %>% ggplot(aes(class)) +
geom_bar() +
labs(title = title)
}
plots <- mpg %>% group_by(manufacturer) %>% nest() %>%
mutate(plots= map(.x=data, ~plot(.x, manufacturer)))
nissan <- plots %>% filter(manufacturer == "nissan") %>% pull(plots)
nissan
nissan + labs(title = "Nissan")
在这种情况下,“nissan”是一个列表对象,我无法对其进行操作。如何提取 ggplot?
就数据结构而言,我认为保留 tibble
(或 data.frame
)就图示用法而言是次优的。如果您每个制造商有一个地块,并且您计划按制造商访问它们,那么我会建议 transmute
然后 deframe
到 list
object.
也就是说,我会发现在这里做一些事情在概念上更清楚:
library(tidyverse)
plot <- function(df, title){
df %>% ggplot(aes(class)) +
geom_bar() +
labs(title = title)
}
plots <- mpg %>%
group_by(manufacturer) %>% nest() %>%
transmute(plot=map(.x=data, ~plot(.x, manufacturer))) %>%
deframe()
plots[['nissan']]
plots[['nissan']] + labs(title = "Nissan")
否则,如果您想保留小标题,另一个类似于评论中建议的选项是在 pull
.
之后使用 first()
我使用分组数据框和地图函数创建了一组 ggplot,我想提取这些图以便能够单独操作它们。
library(tidyverse)
plot <- function(df, title){
df %>% ggplot(aes(class)) +
geom_bar() +
labs(title = title)
}
plots <- mpg %>% group_by(manufacturer) %>% nest() %>%
mutate(plots= map(.x=data, ~plot(.x, manufacturer)))
nissan <- plots %>% filter(manufacturer == "nissan") %>% pull(plots)
nissan
nissan + labs(title = "Nissan")
在这种情况下,“nissan”是一个列表对象,我无法对其进行操作。如何提取 ggplot?
就数据结构而言,我认为保留 tibble
(或 data.frame
)就图示用法而言是次优的。如果您每个制造商有一个地块,并且您计划按制造商访问它们,那么我会建议 transmute
然后 deframe
到 list
object.
也就是说,我会发现在这里做一些事情在概念上更清楚:
library(tidyverse)
plot <- function(df, title){
df %>% ggplot(aes(class)) +
geom_bar() +
labs(title = title)
}
plots <- mpg %>%
group_by(manufacturer) %>% nest() %>%
transmute(plot=map(.x=data, ~plot(.x, manufacturer))) %>%
deframe()
plots[['nissan']]
plots[['nissan']] + labs(title = "Nissan")
否则,如果您想保留小标题,另一个类似于评论中建议的选项是在 pull
.
first()