求助:ggplot2绘制4组小提琴图,2组带条纹2组无图案的问题
解决ggplot2中geom_violin_pattern部分小提琴无图案的问题
你的代码里直接将pattern = 'stripe'设为全局参数,导致所有小提琴都被应用条纹图案。要实现2个带条纹、2个无图案的效果,需要把pattern也纳入美学映射,再手动指定每个分组的图案类型。
修改后的代码示例
gg <- ggplot(AdPluslong, aes(Eval, Total.Score)) + geom_violin_pattern( aes( fill = as.factor(TypeGroupe), # 用Eval和TypeGroupe的交互项区分4个小提琴分组 pattern = interaction(Eval, TypeGroupe) ), pattern_density = 0.001, pattern_angle = 45, colour = 'black' ) + scale_fill_manual(values = c("#E69F00", "#56B4E9", "#E69F00", "#56B4E9")) + # 为4个分组指定图案:2个条纹、2个无图案,顺序需和分组水平对应 scale_pattern_manual( values = c("stripe", "none", "none", "stripe") )
关键调整说明
- 映射pattern到分组变量:将
pattern放入aes()中,绑定到能区分4个小提琴的变量(这里用interaction(Eval, TypeGroupe)生成4个交互分组,如果你有直接的4组分类变量也可以直接用)。 - 手动指定图案:通过
scale_pattern_manual()为每个分组设置图案,'stripe'对应条纹,'none'对应无图案。 - 匹配分组顺序:可以先运行
levels(interaction(AdPluslong$Eval, AdPluslong$TypeGroupe))查看分组的具体顺序,再调整scale_pattern_manual中values的顺序,确保图案对应正确的小提琴。
内容的提问来源于stack exchange,提问作者Adeline Morisot
相关产品推荐
相关产品推荐

