使用 ggplot 创建多个堆叠的小提琴图

Ron*_*nny 4 r ggplot2 violin-plot

我有一个在不同景观上运行的模型,一次同时运行,一次单独运行。我想在小提琴图中绘制结果,但我希望在同一个图中并排运行,并且每个景观都有自己的小提琴(所以2 堆 4 把小提琴)。示例数据:

df1 <- data.frame('means' = 1:6, 'landscape' = rep(c('forest', 'desert', 3)))
df2 <- data.frame('means' = rep(c(1,2), 3), 'landscape' = rep(c('forest', 'desert', 3)))
Run Code Online (Sandbox Code Playgroud)

我希望最终产品看起来如何(MS Paint 中的插图,我是一个糟糕的艺术家): 在此处输入图片说明

绿色代表森林,金色代表沙漠。

CMi*_*ael 5

请注意,这篇文章含蓄地询问“如何将小提琴几何图形打印在彼此之上?”。这当然可以通过position小提琴默认为的参数来回答'dodge'- 将其更改为可以解决'identity'问题。小贴士 - 要求“堆叠”实际上有点误导,因为position='stack'垂直堆叠它们。

这种方法特别避免了笨重的第二个数据集,因此很容易处理多种颜色。

library(tidyverse)

mpg %>%
  filter(class %in% c("compact","midsize")) %>%
  mutate(coloringArgument = paste(drv,class)) %>%
  ggplot(aes(as.factor(drv), cty, color=coloringArgument)) + 
  geom_violin(position = "identity")
Run Code Online (Sandbox Code Playgroud)