R中的Violin Plot在多个数据列上使用ggplot2

时间:2017-03-27 15:17:06

标签: r ggplot2 violin-plot

我是R的新手,并试图在每个采样深度制作各种物种的物种小数据。数据如下所示

    Depth Cd Cf Cl
1  3.6576  0  2  0
2  4.0000  2 13  0
3  4.2672  0  0  0
4 13.1064  0  2  0
5 14.0000  3 17 10
6 17.0000  0  0  0

第2-5列中的物种和第1列中的深度。我试图在R中使用ggplot2但是假设数据没有以ggplot2可以使用的方式组织。理想情况下,我希望深度为y轴和沿x轴的物种,每个都有小提琴图。谢谢您的帮助。 亚历

2 个答案:

答案 0 :(得分:2)

就像您怀疑的那样,您需要重塑数据。使用tidyr::gather更改格式为" wide" to" long",在这种情况下,在x轴上绘制物种是必要的。此外,您需要使用slice扩展计数数据。


library(tidyverse)

zz <- "Depth Cd Cf Cl
1  3.6576  0  2  0
2  4.0000  2 13  0
3  4.2672  0  0  0
4 13.1064  0  2  0
5 14.0000  3 17 10
6 17.0000  0  0  0"

my_dat <- read.table(text = zz, header = T)

my_dat %>% 
  gather(species, val, -Depth) %>% 
  slice(rep(row_number(), val)) %>%
  ggplot(aes(species, Depth)) +
  geom_violin(adjust = .5)

答案 1 :(得分:2)

首先重塑您的数据:

f.get()

enter image description here

请注意,library(tidyverse) my_dat2 <- my_dat %>% gather(species, val, -Depth) %>% slice(rep(row_number(), val)) %>% select(-val) ggplot(my_dat2, aes(species, Depth)) + geom_violin() 只有一行,因为您只有一个深度。