具有R的许多样品的箱图因子

时间:2017-02-13 15:30:30

标签: r

鉴于数据

  Step     A     B     C     D     E     F     G     I     J
1    1 0.158 0.011 0.099 6.504 5.914 0.000 0.100 0.330 0.000
2    2 0.345 0.016 0.102 6.050 5.285 0.000 0.102 0.316 0.001
3    1 0.324 0.015 0.100 7.146 6.426 0.000 0.101 0.293 0.000
4    2 0.264 0.015 0.099 5.864 5.202 0.000 0.101 0.296 0.000
5    1 0.346 0.022 0.101 5.889 5.027 0.000 0.101 0.411 0.000
6    2 0.397 0.022 0.130 6.061 5.311 0.000 0.131 0.220 0.000
7    1 0.337 0.015 0.048 7.417 6.839 0.000 0.110 0.129 0.000
8    2 0.362 0.016 0.143 5.726 4.951 0.001 0.144 0.268 0.000
9    1 0.178 0.011 0.099 5.831 5.290 0.000 0.100 0.261 0.000

d < - read.table('sample.txt', header=T)为我提供了一个数据框,boxplot(d$A ~ d$Step)生成了一个合理的图表,但我似乎无法将所有图表都放在同一个图表上。像boxplot(d ~ d$Step)这样的东西是我期望的,但我得到以下错误:

Error in model.frame.default(formula = d ~ d$Step) : 
  invalid type (list) for variable 'd'

我尝试将Step设为一个因子d$Step <- as.factor(d$Step),但这似乎没有效果。

2 个答案:

答案 0 :(得分:1)

另一种方法是将它们按照自己的比例在基础R中绘制,如此

par(mfrow=c(3,3))
for(i in 2:10) {
    boxplot(d[,i] ~ d$Step, main=names(d)[i]) }

enter image description here

答案 1 :(得分:0)

我们可以使用tidyverse

执行此操作
library(tidyverse)
gather(d, Var, Val, -Step) %>% 
       mutate(Step=factor(Step)) %>%
       ggplot(., aes(x=Var, y = Val, fill=Step)) +
          geom_boxplot() + 
          scale_fill_manual(values = c("red", "blue"))

enter image description here