2012-08-31 59 views
11

如果你看圖表here!您可以看到圖例上方和下方有很多空白區域。我希望減少空間的數量。使用ggplot2的圖例上方和下方的空間

示例代碼:

library(ggplot2) 
library(gridExtra) 
library(reshape) 
library(plyr) 
library(scales) 

theme_set(theme_bw()) 

rows <- 1:nrow(faithful) 
data <- cbind(faithful, rows) 
molten <- melt(data, id.vars='rows', measure.vars=c('eruptions', 'waiting')) 

p <- ggplot() + 
    geom_line(data=molten, 
     mapping=aes(x=rows, y=value, group=variable, colour=variable), size=0.8) + 
    scale_colour_manual(values=c('red','blue')) + 
    opts(title='Title') + 
    xlab(NULL) + ylab('Meaningless Numbers') + 
    opts(
     legend.position='bottom', 
     legend.direction='horizontal', 
     legend.title=theme_blank(), 
     legend.key=theme_blank(), 
     legend.text=theme_text(size=9), 
     legend.margin = unit(0, "line"), 
     legend.key.height=unit(0.6,"line"),  
     legend.background = theme_rect(colour='white', size=0) 
    ) 

ggsave(p, width=8, height=4, filename='crap.png', dpi=125) 

回答

3

這裏有讓您縮小空間環繞傳說兩個附加選項:

p + opts(
     legend.key.height=unit(0, "cm"),  
     plot.margin = unit(c(1,0.5,0,0.5), "lines") 
    ) 

選項plot.margin描述空間還有多大是周圍的情節本身。第三個參數描述圖下面的空間量。設置爲零有助於。

enter image description here

+0

那麼從根本上說,你告訴我有一個無法擺脫的傳說嗎?我只能讓它看起來像它不在那裏。 –

+0

我不是說有沒有填充物,你無法擺脫。我只是說我的解決方案是我能做的最好的。毫無疑問,其他人可以做得更好。 – Andrie

9

要刪除的傳奇邊緣(負值減少白色空間甚至更多):

p + theme(legend.margin=margin(t=0, r=0, b=0, l=0, unit="cm")) 
p + theme(legend.margin=margin(t=0, r=0, b=-0.5, l=0, unit="cm")) 

您也可以通過指定負數刪除的情節利潤率的下部(但要確保你不切斷你的傳奇):

p + theme(plot.margin = unit(x = c(0, 0, -0.2, 0), units = "cm") 

插圖:ggplot2, legend on top and margin

相關問題