2013-12-14 45 views
2

默認情況下,ggplot中的每個圖都適合其設備。如何控制ggplot的繪圖面積比例而不是將它們安裝到R中的設備上?

這並不總是可取的。例如,可能需要將geom_tile中的方塊製成正方形。一旦您更換設備或更改x/y軸上元素的數量,瓷磚不再是正方形。

是否可以設置硬盤的比例或大小的情節和適合其設備的窗口劇情(或者使設備的寬度和高度成正比,這些情節的)?

+1

也許看看[這個答案](http://stackoverflow.com/a/16368413/630863),這似乎保留了你的情節的縱橫比。 – MattLBeck

+0

這通常只適用於保存情節。因此,使用'ggsave',它允許您將'height'和'width'傳遞給設備(pdf,png,...)。 – Roland

+0

@Roland手動指定寬度和高度,這將使你的繪圖區完全平方是棘手的,特別是如果你想,因爲你需要知道的房間到底有多少,這些需要長達佔他們包括傳說和標題。 – MattLBeck

回答

5

您可以使用coord_fixed()指定圖的縱橫比。

> library(ggplot2) 
> df <- data.frame(
+  x = runif(100, 0, 5), 
+  y = runif(100, 0, 5)) 

如果我們繼續繪製這些數據,然後我們得到一個符合輸出設備尺寸的圖。

> ggplot(df, aes(x=x, y=y)) + geom_point() 

然而,如果我們使用coord_fixed(),那麼我們得到與固定縱橫比(其中,默認情況下具有相同的長度的x軸和y軸)的曲線圖。繪圖的大小將由輸出設備的最短尺寸決定。

> ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed() 

最後,我們可以通過指定一個參數coord_fixed(),其中,所述參數是y軸的長度與X軸的長度的比率調整固定縱橫比。因此,要獲得一個情節是兩倍高,因爲它是廣泛的,我們將使用:

> ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed(2) 
+0

非常優雅!是否存在該設備'width'和'height'避免大白色邊緣時'coord_fixed'情節恰好適合該設備的雙方只有一方速戰速決? –

+0

對不起,安東,不是我所知道的。 – DataWookie

2

下面是一個簡單的裝置來治療相對於你的情節,

library(ggplot2) 
p = qplot(1:10, (1:10)^3) 
g = ggplotGrob(p) 
g$respect = TRUE 
library(grid) 
grid.draw(g) 
相關問題