2009-10-02 66 views
8

計數通過因子在考慮下面的圖表GGPLOT2圖表GGPLOT2

ggplot(my_data, aes(colour=my_factor) + 
       geom_point(aes(x=prior, y=current)) + 
       facet_grid(gender ~ age) 

我想使點的大小成比例的my_factor對於現有/當前組合的計數。

ggplot(my_data, aes(colour=my_factor, 
       size=<something-here>(my_factor)) + 
       geom_point(aes(x=prior, y=current)) + 
       facet_grid(gender ~ age) 

任何想法?

== ==編輯

下面是基於MPG數據集一個非常簡單的例子。讓我們來定義 「great_hwy」 作爲HWY> 35,和 「great_cty」 作爲CTY> 25:

mpg$great_hwy[mpg$hwy > 35] <-1 
mpg$great_hwy[mpg$hwy <= 35] <-0 
mpg$great_hwy <- factor(mpg$great_hwy) 

mpg$great_cty[mpg$cty > 25] <- 1 
mpg$great_cty[mpg$cty <= 25] <- 0 
mpg$great_cty <- factor(mpg$great_cty) 

如果我們繪製great_hwy與great_cty,它不會告訴我們多少:

ggplot(mpg) + geom_point(aes(x=great_cty, y=great_hwy)) 

如何我可以根據x/y點的數量使數據點的大小更大嗎?希望這個清除它,但讓我知道否則。

+1

工作這個替代答案小數據樣本在這裏非常有用......如果需要,您可以從?數據集中選擇一個。 – Shane 2009-10-02 19:56:22

+1

我不明白你的意思是「該先前/當前組合的my_factor的數量」。每個x/y是否有多個數據點?所以你正在尋找解決問題的解決方案?或者你的意思是別的嗎? – Harlan 2009-10-02 19:59:54

+0

@Shane,根據你的建議,我正在研究一個更好的例子。 @哈倫,每個x/y都有很多數據點。我想爲每個x/y繪製一個數據點,並且我希望所述數據點的大小與數量x/y對成比例。 – hgmnz 2009-10-02 20:11:18

回答

20

你當然可以通過計數外部ggplot來做到這一點,但ggplot的一個偉大的事情是,你可以在內部做很多這些統計!

使用上面的MPG例如:

ggplot(mpg) + 
    geom_point(aes(x=great_cty, y=great_hwy, 
       size=..count..), stat="bin") 

alt text

+0

這是一個很好的解決方案。謝謝! – Shane 2009-10-02 21:06:56

+0

正是我在找的東西。看起來像*大多數*汽車在城市和高速公路里程方面都不是很好;) – hgmnz 2009-10-02 21:49:23

+0

您可能還想看看這個頁面,只是爲了確認點的大小是您認爲的點數(半徑?區域? ):http://had.co.nz/ggplot2/scale_size.html我認爲比例區域傳統上比較喜歡比例半徑。 – 2009-10-02 22:16:54