如何解决在ggplot中为r中的一行中的每个唯一值创建图
我有一个这样的数据框:
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]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。