2009-10-02 65 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