自动创建图层ggplot

时间:2018-06-21 13:57:07

标签: r ggplot2

我试图构建一个函数来自动完成某些ggplot层中的更改。 具体来说,我编写了一个应修改axis.textaxis.title的函数。

axis_view_presentation<-function(plot,data,axis_title_x,axis_title_y,...)
{
 #browser()
  if(axis_title_x==TRUE & axis_title_y==TRUE )
  {
    plot+theme(plot.title = element_text(hjust=0.5,size=20,face="bold"),
      axis.text.x = element_text(size=18,hjust=1,...),
      axis.text.y = element_text(size=18,hjust=1,...),
      axis.title.x =element_text(size=18,...),
      axis.title.y = element_text(size=18,...))

  }

  if(axis_title_x==FALSE & axis_title_y==TRUE )
  {
    plot+theme(plot.title = element_text(hjust=0.5,size=20,face="bold"),
      axis.text.x = element_text(size=18,hjust=1,...),
      axis.text.y = element_text(size=18,hjust=1,...),
      axis.title.x =element_blank(),
      axis.title.y = element_text(size=18,...))
  }

  if(axis_title_x==TRUE & axis_title_y==FALSE )
  {
    plot+theme(plot.title = element_text(hjust=0.5,size=20,face="bold"),
      axis.text.x = element_text(size=18,hjust=1,...),
      axis.text.y = element_text(size=18,hjust=1,...),
      axis.title.y =element_blank(),
      axis.title.x = element_text(size=18,...))
  }

  if(axis_title_x==FALSE & axis_title_y==FALSE )
  {
    plot+theme(plot.title = element_text(hjust=0.5,size=20,face="bold"),
      axis.text.x = element_text(size=18,hjust=1,...),
      axis.text.y = element_text(size=18,hjust=1,...),
      axis.title.x =element_blank(),
      axis.title.y = element_blank())
  }

}

可复制的示例

data<-data.frame(x=rnorm(20),y=rnorm(20))
p<-ggplot(data=data,aes(x=x,y=y))+
        geom_point()

返回此

enter image description here

如果我使用来调用函数

 p%>%axis_view_presentation(data=data,axis_title_x=TRUE,axis_title_y=FALSE)

它给了我上面显示的相同的情节

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您需要返回剧情

    axis_view_presentation<-function(plot,data,axis_title_x,axis_title_y,...)
{
  #browser()
  if(axis_title_x==TRUE & axis_title_y==TRUE )
  {
    plot_new <-  plot+theme(plot.title = element_text(hjust=0.5,size=20,face="bold"),
               axis.text.x = element_text(size=18,hjust=1,...),
               axis.text.y = element_text(size=18,hjust=1,...),
               axis.title.x =element_text(size=18,...),
               axis.title.y = element_text(size=18,...))

  }

  if(axis_title_x==FALSE & axis_title_y==TRUE )
  {
    plot_new <-  plot+theme(plot.title = element_text(hjust=0.5,size=20,face="bold"),
               axis.text.x = element_text(size=18,hjust=1,...),
               axis.text.y = element_text(size=18,hjust=1,...),
               axis.title.x =element_blank(),
               axis.title.y = element_text(size=18,...))
  }

  if(axis_title_x==TRUE & axis_title_y==FALSE )
  {
    plot_new <-  plot+theme(plot.title = element_text(hjust=0.5,size=20,face="bold"),
               axis.text.x = element_text(size=18,hjust=1,...),
               axis.text.y = element_text(size=18,hjust=1,...),
               axis.title.y =element_blank(),
               axis.title.x = element_text(size=18,...))
  }

  if(axis_title_x==FALSE & axis_title_y==FALSE )
  {
   plot_new <- plot+theme(plot.title = element_text(hjust=0.5,size=20,face="bold"),
               axis.text.x = element_text(size=18,hjust=1,...),
               axis.text.y = element_text(size=18,hjust=1,...),
               axis.title.x =element_blank(),
               axis.title.y = element_blank())
  }
  return(plot_new)
}