2016-08-23 260 views
0

在R基本圖中,外邊距可以通過oma()來控制,我不知道ggplot2中是否有類似的功能來做到這一點。如下圖所示,圖形和頁面邊緣之間幾乎沒有空格。非常感謝。 enter image description here如何在ggplot2中設置外邊距?

請注意,我不是問每個子圖之間的設置邊距(這可以通過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")) 
+0

呵呵。'plot_grid'返回ggplot對象。去的身影。只需添加'+主題(plot.margin =保證金(30,30,30,30))'(或任何空間,你需要) – hrbrmstr

+0

非常感謝。但我所要求的是如何爲整個圖形設置外邊距(類似於R基本圖中的'oma'),而不是子圖。 –

+0

這有點破解,但是'gridExtra :: grid。安排(plot1,plot2,plot1,plot1,向左=「」,top =「」,bottom =「」,right =「」)'會給你一些外緣...... –

回答

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