2014-01-09 34 views
2

我想裁剪繪製ggplot中的圖後得到的額外空白。在R使用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

然而了「空白」(我使背景顏色的黃色以示出邊界和情節之間的空間)不被去除和,而數的列更改爲2,圖例列表的大小也會發生變化,我不需要。有人可以請指導我如何保留圖例列表的大小,同時將列更改爲2,並刪除劇情外部邊界的額外空白。

感謝

+1

使用'主題(plot.margin = ...)'調整陰謀周圍的空白區域 – baptiste

+0

@baptiste感謝您的建議,我使用'+ theme(plot.margin = unit(c(0,0,0,0),「mm」))''用於去除繪圖周圍的空白空白。 – Amm

回答

11

對於維護傳說列表的大小而改變傳說中的列數爲2這下面的代碼工作。爲保留圖例大小,在override.aes的括號內需要有ncol=2

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

完全除去周圍的情節空白使用ggplot在讀該代碼不工作,

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

確保包括由library(grid)

+0

僅供參考,如果您製作的軸線上沒有任何標籤,並且您希望邊緣擁抱該圖的乾淨緊密版本,並且將axis.text和axis.ticks設置爲element_blank(),則您還需要設置實驗室(x = NULL,y = NULL)而不是實驗室(x =「」,y =「」)。 – Jordan