如何让geom_violin中着色的geom_sina点保持在小提琴图范围内
问题原因与修复方案
- 异常效果的核心来源:在
geom_sina的美学映射中新增颜色参数后,ggplot会自动将离散美学的交互组合(x轴的vs因子、颜色对应的cyl因子)作为独立计算分组。geom_sina会为每个细分小组单独计算散点排布的带宽范围,最终出现散点被拆成多列、散落到小提琴图边界外侧的问题。 - 修复思路:强制
geom_sina的排布分组和小提琴图的x轴分组完全对齐,不让颜色映射干扰散点的排布范围计算。 - 代码调整:
原异常写法:p + geom_sina(aes(colour = factor(cyl)), alpha = 0.5)
修复后写法:p + geom_sina(aes(colour = factor(cyl), group = factor(vs)), alpha = 0.5) - 实际效果:加入
group = factor(vs)参数后,同一vs水平下的所有散点会被作为整体计算排布位置,和无颜色映射时的自然边界内抖动效果完全一致,仅通过颜色区分不同cyl的样本,不会拆分形成独立多列排布。
内容的提问来源于stack exchange,提问作者bchate
相关产品推荐
相关产品推荐

