如何让ggplot2的geom_dotplot实现垂直堆叠并保留分组颜色
geom_dotplot 同bin跨分组堆叠保留颜色的解决方案
你可以通过设置geom_dotplot的stackgroups = TRUE原生参数实现需求,完整可运行代码如下:
library(ggplot2) ggplot(dfc, aes(x = r, color = g, fill = g)) + geom_dotplot(binwidth = 0.2, stackgroups = TRUE)
参数说明
stackgroups = TRUE:强制将同一bin下所有分组的点统一计算堆叠位置,不会按分组分开堆叠,同时保留每个点的分组映射属性(填充色、边框色),完美匹配「堆叠正常+分组颜色区分」的效果。- 不需要额外引入第三方包的位置调整函数,仅用ggplot2原生参数即可实现预期效果。
前两种写法的问题原因
- 指定
group=1时,ggplot会将所有数据归为同一个分组,设置的color=g、fill=g分组映射失效,所以堆叠效果正常但无颜色区分。 - 不指定
group=1时,ggplot默认按g分组分别计算堆叠位置,所以同一bin内的不同组点会分开堆叠,颜色正常但堆叠效果不符合要求。
内容的提问来源于stack exchange,提问作者Ben Bolker
相关产品推荐
相关产品推荐

