【问题标题】:Removing outline color from only one layer in ggplot仅从ggplot中的一层删除轮廓颜色
【发布时间】:2018-05-23 13:40:10
【问题描述】:

我使用以下方法创建了一个由三层组成的图(小提琴图、箱图和蜂群图)

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. 但是,我希望小提琴是箱线图下方的简单阴影区域,即使用透明填充但没有轮廓,这样箱线和小提琴的线条不会发生冲突,并且图表更易于查看。

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

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

一般来说,我想知道是否可以为同一绘图的不同层为fill 和color 设置不同的alpha 值。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多