2012-01-21 50 views
4

我正在生成不同組別的數據點的binhex圖。每個組可能具有不同的總點數,因此,而不是每個bin值是絕對點數,我希望它是該組內總點數的百分比。這是我目前正在嘗試的:在ggplot2中計算垃圾箱的百分比stat_binhex

d <- data.frame(grp= c(rep('a',10000), rep('b',5000)), 
       x= rnorm(15000), 
       y= rnorm(15000)) 
ggplot(d, aes(x= x, y= y)) + 
    stat_binhex(aes(fill= ..count../sum(..count..)*100)) + 
    facet_wrap(~grp) 

這是正確的嗎? sum(..count..)是以每個方面爲基礎產生總分(a組爲'10000',b組爲'5000'),還是兩個方面產生15000分?

+0

該圖形相較於使用'stat_binhex的一個(AES(填寫= ..count ..))'可能會回答你的問題。 – joran

回答

5

你是對的。

> ggplot(d, aes(x= x, y= y)) + stat_binhex(aes(fill= {print(sum(..count..));..count../sum(..count..)*100})) + facet_wrap(~grp) 
[1] 10000 
[1] 10000 
[1] 5000 

這意味着數據被分爲10000和5000個元素(忽略第一個輸出),這是你期望的。

但更容易,你可以使用..density..*100

ggplot(d, aes(x= x, y= y)) + stat_binhex(aes(fill= ..density..*100)) + facet_wrap(~grp)