问题描述
library(tidyverse)
my_data <- tibble(name = c("Justin","Janet","Marisa"),x = c(100,50,75),y = c(2,3,6))
每个名字都是唯一的,我想为每个人制作一个条形图,而不必一行一行地做。我还想将每个图另存为唯一对象,因为我将使用Officer包将其输入到Power Point中。最后,名称并不总是相同的,但是每个名称将总是唯一的。
例如,我想要珍妮特(Janet)一幅情节,贾斯汀(Justin)一情节,玛丽莎(Marisa)一情节。我不希望它们多面,而应该作为它们自己的对象。
有什么想法吗?
解决方法
我们可以先获取长格式的数据,然后为每个name
创建图。
library(tidyverse)
long_data <- my_data %>% tidyr::pivot_longer(cols = -name,names_to = 'col')
plots_list <- map(unique(my_data$name),~long_data %>%
filter(name == .x) %>%
ggplot() + aes(name,value,fill = col) +
geom_bar(stat = 'identity',position = 'dodge') +
scale_fill_manual(values = c('red','blue')) +
ggtitle(paste0('Plot for ',.x)))
这将返回可以通过plots_list[[1]]
,plots_list[[2]]
等访问单个图的图列表。
plots_list[[1]]