2012-07-24 36 views
6

當在ggplot2中使用facet_grid時,我希望能夠爲特定圖的右上角的每個網格單元的子集數據具有相關值。來自ggplot2的方面網格中的相關值

例如如果運行:

p <- ggplot(mtcars, aes(mpg, wt)) + geom_point() 
p + facet_grid(vs ~ am, margins=TRUE) 

我想看看網格中某個地方的每個9個圖的相關值。從這個例子的具體情況來看,我預計從視覺檢查來看,每個接近-0.9左右。

或許輸出表一起去,讓相關值爲每個與facet_grid匹配了表格單元格中的情節......(這是不太可取的,但也是一種選擇)。

理想情況下,我想將其擴展到我選擇的任何其他函數,以便它可以使用繪製的兩個變量中的一個或兩個來計算統計量。

這可能嗎?

預先感謝

回答

3

溫斯頓常建議在GGPLOT2組的答案......這是他說的......它不是一個壞的答案...

你可以這樣做:

p <- ggplot(mtcars, aes(mpg, wt)) + geom_point() 

# Calculate correlation for each group 
cors <- ddply(mtcars, c("vs", "am"), summarise, cor = round(cor(mpg, wt), 2)) 

p + facet_grid(vs ~ am) + 
geom_text(data=cors, aes(label=paste("r=", cor, sep="")), x=30, y=4) 

雖然,我不認爲用margin = TRUE可以使它正確地出來。如果您需要邊距,則可能需要預處理數據以爲每個分面變量添加一個ALL值。

-Winston

4

我寧願添加一個(線性)平滑的數據。它提供了比關聯更多的信息。

ggplot(mtcars, aes(mpg, wt)) + 
    geom_smooth(method = "loess", colour = "red", fill = "red") + 
    geom_smooth(method = "lm", colour = "blue", fill = "blue") + 
    geom_point() + facet_grid(vs ~ am, margins=TRUE) 

enter image description here

ggplot(mtcars, aes(mpg, wt)) + geom_smooth(method = "lm") + geom_point() + 
    facet_grid(vs ~ am, margins=TRUE) 

enter image description here