2016-11-03 82 views
0

我目前正在創建具有GGPLOT2地塊爲乳膠文件,發現GGPLOT2增加了許多不必要的邊距:如何刪除利潤率GGPLOT2圖表

enter image description here

  • 塗成紅色的plot.background=element_rect(fill="red")
    • 左邊的小邊距
    • 圖像和圖例之間的小邊距
  • 塗紫用Photoshop:左側
    • 緣和右
    • 1px的利潤率在底部

哪些是需要更多的規則,以消除這些利潤?谷歌所有這些配置選項真的很困難。這是我的實際圖表:

library(ggplot2) 
library(scales) 
label <- c("A", "B", "C", "D") 
value <- c(61, 26, 9, 4) 
values <- data.frame(label, value) 
myplot <- ggplot(values, aes(x = "", y=value, fill=label)) 
myplot <- myplot + theme(legend.position="bottom") 
myplot <- myplot + labs(fill="") 
myplot <- myplot + geom_bar(stat="identity", width=1) 
myplot <- myplot + geom_text(
    aes(x=1.3, y=value/2+c(0, cumsum(value)[-length(value)])), 
    label=percent(value/100), 
    size=2 
) 
myplot <- myplot + coord_polar(theta="y") 
myplot <- myplot + theme(plot.background=element_rect(fill="red")) 
myplot <- myplot + theme(
    plot.margin=unit(c(0,0,0,0), "mm"), 
    legend.margin=unit(0, "mm"), 
    axis.title=element_blank(), 
    axis.ticks=element_blank() 
) 
ggsave("pie.pdf") 
+0

Dupe? [刪除'ggplot2'中的繪圖邊距](http://stackoverflow.com/a/17791455/903061)表示'labs(x = NULL,y = NULL)'也是需要的。 – Gregor

+0

然而,它似乎並沒有起到什麼作用,至少與紅色區域沒有關係。 – Gregor

+0

爲什麼不移動''myplot < - myplot +主題(plot.background = element_rect(fill =「red」))? –

回答

1

您可以通過主題元素axis.textaxis.tick.length刪除軸空間的其餘部分。

所以,你會加入類似下面你theme代碼:

axis.text = element_blank(), axis.ticks.length = unit(0, "mm") 

在GGPLOT2的開發版本,ggplot2_2.1.0.9001,有一個新的主題元素legend.box.spacing可能在這裏也可以用來刪除圖例與情節之間的所有空間:legend.box.spacing = unit(0, "mm")

+0

'axis.text'和'axis.ticks.length'解決了問題 –

0

調整plot.margin設置,使底部和左側爲負數。

plot.margin=unit(c(0,0,-12,-5), "mm")

如果你得到的底部擺脫保證金的,你也犧牲了傳奇。

+0

此硬編碼值的問題是,您必須重新計算每個新圖表類型的值。如果您知道正確的邊距和長度選項,它們將適合您製作的每個未來可能的圖表。 –