grid.draw切断Facet网格标题和X& Y标签

时间:2016-03-24 13:33:31

标签: r ggplot2

我正在尝试在facet_grid()中创建一个ggplot(),并且我的情节边缘存在问题。我正在使用grid.draw()作为我的最终情节,并且无法弄清楚如何调整打印边距。当我保存我的情节时,看起来很好(见下文)。然而,当我实际将我的情节打印到硬拷贝时,一半的X& Y标签和我的情节标题被切断了。

我尝试使用par()无效。这是一个可重复的例子,类似于我的实际情节。我需要保留panel <- off部分,因为在我的实际情节中,我在每个条形图上方绘制了数字,并且它们在每个月的开始/结束时被小平面切断了几天。我认为这可能是问题的根源,但我并不确定是诚实的。

data(airquality)

library(stats)
library(ggplot2)
library(gtable)
library(gridExtra)
library(grid)
library(dplyr)
library(scales)

facet <- ggplot() +
  geom_bar(data=airquality,aes(y=Wind,x=Day,fill=Temp),colour="black",stat="identity",position='stack') +
  #theme_bw() +
  facet_grid(~Month) + 
  theme(axis.title.x=element_text(face="bold",size=14),axis.title.y=element_text(face="bold",size=14),axis.text.x=element_text(face="bold",size=10),axis.text.y=element_text(face="bold",size=10))+
  ylab("Wind") +
  theme(panel.margin = unit(5, "mm"),panel.border=element_rect(color="black",fill=NA),panel.background = element_rect(fill="grey84"),plot.title = element_text (size=20,face="bold"),legend.position="right",panel.grid.minor=element_blank(),strip.text.x=element_text(size=12,face="bold"),strip.background=element_rect(fill=NA,colour="black"),legend.title=element_text(size=14,face="bold")) +
  ggtitle("Test") 

gt <- ggplot_gtable(ggplot_build(facet))
gt$layout$clip[gt$layout$name=="panel"] <- "off"
grid.draw(gt)

enter image description here

感谢您的帮助!如果您需要任何澄清或有任何问题,请告诉我。

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  • 在ggplot主题中设置一些边距
  • 将特定大小的视口指定给plot / gtable,小于设备窗口一些边距。以下是一次使用这两种策略的说明

enter image description here

library(grid)

fig_size <- c(6, 4) # inches
margin <- unit(4, "line")

p <- ggplot() + theme(plot.background=element_rect(colour="red", size=2, fill="grey50"),
                      plot.margin = unit(1:4, "line"))
g <- ggplotGrob(p)
g$vp <- viewport(width = unit(fig_size[1], "in") - margin, height=unit(fig_size[2],"in")- margin)

ggsave("plot.pdf", g, width=fig_size[1], height=fig_size[2])