2017-07-06 132 views
0

我通常使用png設備從ggplot2保存圖。輸出的寬度和高度由函數的參數設置。當圖的「自然比例」不適合設備的比例時,繪製空白區域。爲了避免這種情況並使用整個定義的畫布,必須知道該圖的比例。 ¿是否有辦法在沒有反覆試驗的情況下找出這個值?知道ggplot2圖的比例

該代碼可以作爲一個例子:

x <- seq(from = 0, to = 1, by = 0.1) 
y <- seq(from = 1, to = 2, by = 0.1) 
df <- expand.grid(x = x, y = y) 
df <- cbind(df, z = rnorm(ncol(df), 0, 1)) 

p <- ggplot(df, aes(x,y, fill = z)) + geom_raster() + coord_fixed() 

ppi <- 300 

#Value 0.4 is used to change inches into milimeters 
png("plot.png", width = 16*0.4*ppi, height = 20*0.4*ppi, res = ppi) 
print(p) 
dev.off() 

可以看出,一些空白空間的頂部和在底部加入到填充PNG文件。這可以通過使用不同於20/16的比例來輕易糾正,這不是最佳的。

回答

0

您可以修改ratio ARG內coord_fixed()

p <- ggplot(df, aes(x,y, fill = z)) + 
     geom_raster() + 
     coord_fixed(ratio = 20/16) 

Alteratively可以指定theme()aspect.ratio

p <- ggplot(df, aes(x,y, fill = z)) + 
     geom_raster() + 
     theme(aspect.ratio = 20/16) 

的結果是一樣的:

enter image description here

+0

我的意思是,當座標比率固定時,「自然比例」應該考慮標題的大小,圖例,小平面條等等。如果比例1在此圖中'coord_fixed'中固定,「寬度」和「高度」的比例也固定爲1,由於軸標,圖例等原因,png文件中會出現空白區。 – Servadac