使用透明的图形体在ggplot2中叠加小提琴图。

5

以下是我正在处理的代码:

library(ggplot2)
coco1<-rnorm(10000,0,1)
coco2<-rnorm(10000,10,5)
coco3<-rnorm(10000,20,10)
coco4<-rnorm(10000,30,20)
decile<-rbinom(10000,3,1/2)+1
coconut<-data.frame(coco1,coco2,coco3,coco4,decile)

p <- ggplot(coconut, aes(factor(decile), coco1))
p <- p + geom_violin(aes(colour = "1"), alpha = .5, size=2)
q <- p + geom_violin(aes(y = coco2, colour = "2"), alpha = .5, size=2)
q <- q + geom_violin(aes(y = coco3, colour = "3"), alpha = .5, size=2)
q <- q + geom_violin(aes(y = coco4, colour = "4"), alpha = .5, size=2)

q

生成以下图片:

enter image description here

注意到随着小提琴层数的增加,小提琴的身体会产生透明度问题吗?理想情况下,我希望小提琴的身体alpha=0,而身体轮廓alpha=1。


1
geom_violin(fill =“透明”) - zx8754
1个回答

7
p <- ggplot(coconut, aes(factor(decile), coco1)) + 
  geom_violin(aes(colour = "1"), fill = NA, size=2) + 
  geom_violin(aes(y = coco2, colour = "2"), fill = NA, size=2) +
  geom_violin(aes(y = coco3, colour = "3"), fill = NA, size=2) +
  geom_violin(aes(y = coco4, colour = "4"), fill = NA, size=2)

p

resulting plot


成功了。谢谢。我之前用过fill=F,但没有起作用。NA似乎是一个明显的替代方案。 - evoclue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接