2012-05-14 49 views
5

我喜歡facet_grid相當多,並且經常發現我自己使用它與geom_histogram。我也喜歡margins=foo參數,因爲您可以看到所有分佈與聚合組相比。問題在於,當您包含邊際參數時,它會展開所有組以滿足通常更廣泛的邊距範圍,因爲您現在擁有所有數據。這意味着所有聚集的小組在規模上要寬得多,而且很難發現小組之間的差異。所以我對自己說:自我,你可以用尺度參數來解決這個問題,並允許y改變「。這個解決方案的問題是,現在很難比較聚集的組,因爲它們都有不同的尺度,我想要的是有邊距是免費的,但一切的約束,就好像雖然規模不是免費的。這可能嗎?ggplot2釋放餘量約束其餘

我在這裏介紹的代碼和圖片來證明我的意思。如果這是不明確的,請詢問。

#create some data 
set.seed(10) 
dat <- data.frame(var1=rpois(1000, 20), 
    var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)), 
    var3=as.factor(sample(month.abb[1:5], 1000, replace=T))) 

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3) 

這裏的情節從我喜歡它,我可以很容易地比較對所有的分數,因爲他們的Y標尺是相同的,但不會是好的,有邊距或DIS聚集histogra ms以及比較。

enter image description here

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3, margins='var2') 

好吧,所以我們把在margins說法,現在我們可以比較,但所有的聚合組直方圖被拉伸到20,這讓他們比較困難的(見下圖)。好吧,讓我們設置scales然後自由。這個例子是不可怕的數據是相當均勻分佈的int他抽樣的方法我用了,但在現實生活中一些細胞只有幾個數等都有大量的和比較是更糟

enter image description here

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3, margins='var2', scales="free_y") 

所以,這裏是與秤免費的情節。問題是他們確實對於總分來說是免費的,並且比較他們是有問題的(一個是14個,一個8個,一個7個)。

enter image description here

那麼,有沒有一種方法讓剛margins是免費的嗎?基本上我想要的是從第二個數字開始創建第一個數字,並將餘量拼接起來。

+0

我的猜測是否定,雖然有一個相關的[功能請求](https://github.com/hadley/ggplot2/issues/187),這對我來說似乎更容易和更合理。 – joran

+0

@joran我應該基於此做出功能請求嗎?如果是的話,人們如何去做呢? –

回答

1

此解決方法在此期間能夠正常工作嗎?您有重複的標題,但可以刪除x比例和標籤。

require(ggplot2) 
require(gridExtra) 
set.seed(10) 
dat <- data.frame(var1=rpois(1000, 20), 
        var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)), 
        var3=as.factor(sample(month.abb[1:5], 1000, replace=T))) 
dat$var4 <- "All" 

windows(width=8, height=8) 

p1 <- ggplot(dat, aes(var1)) + 
    geom_histogram() + 
    facet_grid(var2~var3) + 


p2 <- ggplot(dat, aes(var1)) + 
    geom_histogram() + 
    facet_grid(~var3) 


grid.arrange(p1, p2, nrow=2, heights=c(4,1.5)) 

enter image description here

你大概已經知道如何從第一曲線與scale_x_continuous('', breaks = NA)下降的X規模和標籤。