仅从ggplot

时间:2018-05-23 13:40:11

标签: r ggplot2

我使用以下

创建了一个由三层(小提琴,盒子和贝壳曲线)组成的图形

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))

情节看起来 like this. 然而,我希望小提琴在箱形图下方是简单的阴影区域,即具有透明填充,但没有轮廓,因此盒子和小提琴的线条不会发生冲突,图形更容易看到。

我的问题是,我不知道如何在此特定图层(color)中将geom_violin()的alpha设置为仅 ,同时保持轮廓其他层可见。 scale_color_manual同等地影响所有geom图层,因此如果我将alpha设置为零,则框和点会丢失其轮廓,这是我不想要的。 geom_violin确实有一个alpha参数,但这只会影响fill颜色的透明度,因此也不会解决问题。

This is what I want to achieve*.(*请注意,我使用Inkscape手动删除了大纲。)

一般情况下,我想知道是否可以为同一图表的不同图层设置fillcolor的不同Alpha值。

1 个答案:

答案 0 :(得分:0)

在geom_violin行中添加调用make color = NA。

geom_violin(position = position_dodge(0.8), color = NA) 

enter image description here