带有dplyr和ggplot的独特轴标签 - R.

J.C*_*Con 3 r ggplot2 dplyr purrr

purrr用来做多个ggplot2情节.如何使用数字字符串为每个x轴指定唯一名称?

我最好的尝试(下图)是唯一能够得到的字符串的第一个值,因此全部3个图的x轴表示1% explained variance,当我想三个不同的名字1% explained variance,2% explained variance3% explained variance.谢谢

library(tidyverse)

new<-c(1,2,3)

iris%>%
  split(.$Species) %>%
  purrr::map2(.y = names(.),
              ~ ggplot(data=., aes(x=Sepal.Length, y=Sepal.Width))+
                geom_point()+
                labs(x=paste(round(new,2),'% explained variance', sep=''))
  )
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

map2我们可以指定.yas seq_along(.)然后使用它来索引'new'因为'new'是长度为3的向量.

l1 <- iris %>% 
        split(.$Species) %>% 
        map2( seq_along(.), ~ 
             ggplot(data=., aes(x=Sepal.Length, y=Sepal.Width))+
                geom_point()+
                labs(x=paste(round(new[.y],2),'% explained variance', sep='')))
Run Code Online (Sandbox Code Playgroud)

注意:如果我们不使用names,那么只需传递'new'作为.y(这里list不使用元素的名称)


这些图可以保存为单个pdf

library(gridExtra)
l2 <- map(l1, ggplotGrob)
ggsave(marrangeGrob(grobs = l2, nrow = 1, ncol =1), file = "plots.pdf")
Run Code Online (Sandbox Code Playgroud)

或者将其保存为在同一页面上具有多个绘图的单个png

ggsave(marrangeGrob(grobs = l2, nrow = 3, ncol =1), file = "plots.png")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述