在 ggplot2 图表中按因子计数
Posted
技术标签:
【中文标题】在 ggplot2 图表中按因子计数【英文标题】:Count by factor in ggplot2 chart 【发布时间】:2010-12-03 10:38:26 【问题描述】:给定以下 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 vs. great_cty,它不会告诉我们太多:
ggplot(mpg) + geom_point(aes(x=great_cty, y=great_hwy))
如何根据 x/y 点的数量使数据点的大小更大?希望这可以解决问题,但请告诉我其他情况。
【问题讨论】:
一个小数据样本在这里会很有帮助...如果需要,您可以从 ?datasets 中选择一个。 我不明白您所说的“先前/当前组合的 my_factor 计数”是什么意思。每个 x/y 是否有多个数据点?因此,您正在寻找过度绘图问题的解决方案?还是你的意思是别的? @Shane,我正在根据您的建议制作一个更好的示例。 @Harlan,每个 x/y 都有很多数据点。我想为每个 x/y 绘制一个数据点,并且我希望所述数据点的大小与 x/y 对的数量成正比。 【参考方案1】:您当然可以通过在 ggplot 外部进行计数来做到这一点,但是 ggplot 的一大优点是您可以在内部进行许多此类统计!
使用上面的 mpg 示例:
ggplot(mpg) +
geom_point(aes(x=great_cty, y=great_hwy,
size=..count..), stat="bin")
【讨论】:
这是一个很好的解决方案。谢谢! 正是我想要的。看起来大多数汽车在城市和高速公路里程方面都不是很好;) 你可能还想看看这个页面,只是为了确保点的大小是你认为的(半径?面积?):had.co.nz/ggplot2/scale_size.html我认为有比例面积是传统上更喜欢比例半径。 是的,但 ggplot2 不这样做,因为它只适用于点 - 而不是(例如)线条或文本。强烈建议使用 scale_area 来获得积分! 我相信这会在新版本的 ggplot 中引发警告(我希望将来不会破坏这种方法):Mapping a variable to y and also using stat="bin". With stat="bin", it will attempt to set the y value to the count of cases in each group. This can result in unexpected behavior and will not be allowed in a future version of ggplot2. If you want y to represent counts of cases, use stat="bin" and don't map a variable to y. If you want y to represent values in the data, use stat="identity". See ?geom_bar for examples. (Deprecated; last used in version 0.9.2)
【参考方案2】:
因为接受的答案使用了已弃用的功能,所以我会指出这个适用于 ggplot2 1.0.1
的替代答案
ggplot2 visualizing counts of points plotted on top of each other: stat_bin2d or geom_tile or point size?
【讨论】:
以上是关于在 ggplot2 图表中按因子计数的主要内容,如果未能解决你的问题,请参考以下文章