使用R中的ggplot包在绘图中裁剪额外的空白区域

时间:2014-01-09 17:50:40

标签: r background ggplot2 whitespace legend

我想裁剪在ggplot中绘制绘图后产生的额外空白。

我有以下代码,

    p1 <- ggplot(d2, aes_string(x=names(sameTLM_df)[1],y= "value")) + 
        geom_point(aes(color = variable), size = 1)+ 
        theme_bw()+
        theme(legend.text=element_text(size=18), legend.title=element_text(size=18))+
        theme(axis.text=element_text(size=20)) +
        theme(axis.title=element_text(size=24,face="bold")) +
 scale_color_discrete(name = "Title", labels = c("1","2","3","4","5","6","7","8","9")) + labs(x = "x", y = "y")+ 
guides(colour = guide_legend(override.aes = list(size=4))) 

产生这样的情节,

enter image description here

我想裁剪绘图周围的白色背景,并将图例中的列数更改为2,所以我使用以下代码,

p2 <- p1 + guides(col = guide_legend(ncol = 2)) + theme(plot.background = element_rect(fill = NULL))

这导致了这样的情节,

enter image description here

然而&#34;空白&#34; (我已经将背景颜色设置为黄色,以说明边界和绘图之间的空间)未被删除,当列数更改为2时,图例列表的大小也会发生变化,这是我不需要的。有人可以指导我如何在将列更改为2并删除绘图外边界中的额外空白时保留图例列表的大小。

由于

1 个答案:

答案 0 :(得分:12)

为了在将图例列数更改为2时保留图例列表的大小,以下代码可以正常工作。 ncol=2的括号内必须override.aes才能保留图例大小。

+ guides(colour = guide_legend(override.aes = list(size=4),ncol=2))

为了完全删除在R中使用ggplot创建的绘图周围的空白,此代码完成了这项工作,

+theme(plot.margin=unit(c(0,0,0,0),"mm"))

确保包含library(grid)