如何在ggplot2中设置外边距?

时间:2016-08-23 20:43:59

标签: r plot ggplot2 cowplot

在R基本情节中,外边距可以通过oma()来控制,我想知道ggplot2中是否有类似的功能来执行此操作。如下图所示,图形和页面边缘之间几乎没有空格。非常感谢。 enter image description here

请注意,我不是在询问每个子图之间的设定边距(这可以通过ggplot2中的plot.margin=来完成)。我要问的是如何设置整个数字的外边距(如R基本情节中的oma)。感谢。

require(cowplot)
require(ggplot2)
x=1:50
y=x^2
z=rep(c("p","sp","n","sn","nt"),each=10)
mydata= data.frame(x,y,z)
plot1=ggplot(mydata,aes(x=x,y=y,group=z))+geom_point(aes(shape=z,color=z),size=1)+scale_shape_manual(values=c(19,1,19,17,17))+scale_color_manual(values=c("blue","black","red","blue","red"))
plot2=ggplot(mydata,aes(x=x,y=y,group=z))+geom_point(aes(shape=z,color=z),size=3)+scale_shape_manual(values=c(19,1,19,17,17))+scale_color_manual(values=c("blue","black","red","blue","red"))
plot3=ggplot(mydata,aes(x=x,y=y,group=z))+geom_point(aes(shape=z,color=z),size=5)+scale_shape_manual(values=c(19,1,19,17,17))+scale_color_manual(values=c("blue","black","red","blue","red"))
plot4=ggplot(mydata,aes(x=x,y=y,group=z))+geom_point(aes(shape=z,color=z),size=7)+scale_shape_manual(values=c(19,1,19,17,17))+scale_color_manual(values=c("blue","black","red","blue","red"))
plot_grid(plot1, plot2, plot1,plot1, align='h', labels=c('a', 'b',"c","d"))

1 个答案:

答案 0 :(得分:0)

如果您希望继续使用cowplot,可以使用ggdraw() + draw_plot(),如cowplot introduction底部所示。我们的想法是将每个绘图的宽度和高度设置为小于其他情况(在这种情况下为0.4),并相应地定位绘图(例如,在(0.1, 0.1)而不是(0, 0) :

ggdraw() +
  draw_plot(plot1, .1, .5, .4, .4) +
  draw_plot(plot2, .5, .5, .4, .4) +
  draw_plot(plot3, .1, .1, .4, .4) +
  draw_plot(plot4, .5, .1, .4, .4) +
  draw_plot_label(LETTERS[1:4], 
                  x = c(.1, .5, .1, .5), 
                  y = c(.9, .9, .5, .5), size = 15)

enter image description here