我使用以下命令创建了一个由三层(小提琴图、箱图和蜂群图)组成的图表
library(ggplot2)
library(ggbeeswarm)
df <- data.frame(var1 = sample(c("Condition A", "Condition B"), 50, replace =T),
var2 = sample(c("Group 1", "Group 2"), 50, replace =T),
value = sample(c(1,2,3,4,5,6,7,8,9,10), 50, replace =T))
ggplot(df, aes(x=var1, y=value, fill = var2, group = interaction(var1,var2))) +
geom_violin(position = position_dodge(0.8)) +
geom_boxplot(position = position_dodge(0.8), width = .6, outlier.shape = NA) +
# from ggbeeswarm
geom_quasirandom(method = "pseudorandom", dodge.width=0.8, size = 3, alpha = 0.6) +
scale_fill_manual(values=alpha(c("#848484","#0F185B"), .3)) +
scale_color_manual(values=c("#848484","#0F185B")) +
theme_bw() +
theme(text = element_text(size=15))
Run Code Online (Sandbox Code Playgroud)
剧情是 这样的。 然而,我希望小提琴是箱线图下方的简单阴影区域,即具有透明填充,但没有轮廓,这样箱线和小提琴的线条就不会冲突,并且图形更容易查看。
我的问题是,我不知道如何仅在该特定图层 ( ) 中将alpha 设置color为零,同时保持其他图层的轮廓可见。同样地影响所有图层,因此如果我将 alpha 设置为零,那么框和点就会失去其轮廓,这是我不希望的。确实有一个参数,但这仅影响颜色的透明度,因此也不能解决问题。geom_violin()scale_color_manualgeomgeom_violinalphafill
这就是我想要实现的目标*。(*请注意,我使用Inkscape手动删除轮廓。)
一般来说,我想知道是否可以为同一图的不同层设置不同的 alphafill值color。
在 geom_violin 行中添加一个调用以使 color = NA。
geom_violin(position = position_dodge(0.8), color = NA)
Run Code Online (Sandbox Code Playgroud)