箱形图分组为因子

时间:2014-11-20 15:02:09

标签: r boxplot

我正在尝试绘制多个变量(表格中的列)的箱线图,将主题分组为cl.med中的水平。

这就是我的尝试:

boxplot(scfa[,c("acetate","propionate")]~as.factor(cl.med),outline=FALSE)

这是我的表:

         aceticacid.methylester.1 acetate butyrate fumarate caprate propionate X3phenylpropionate valerate formate
01.BA.V                     4.509  0.1430   0.0168    4e-04  0.0080     0.0174             0.0008   0.0030   5e-04
01.BA.VG                    2.750  0.2736   0.0228    4e-04  0.0047     0.0261             0.0012   0.0014   4e-04
01.BO.VG                   15.281  0.1667   0.0159    6e-04  0.0049     0.0191             0.0008   0.0011   4e-04
01.PR.O                     0.317  0.2470   0.0327    4e-04  0.0078     0.0293             0.0006   0.0016   4e-04
01.TO.VG                    0.210  0.1406   0.0186    4e-04  0.0034     0.0161             0.0006   0.0026   6e-04

这是我的班级载体

01.BA.VG 01.BO.VG  01.PR.O 01.TO.VG 02.BA.VG
1     2    3    1    3    2

这会生成3个框(对于预期的3个类),但这两个变量是合并的。我怎么能修改它为每个变量获得3个盒子?

由于

2 个答案:

答案 0 :(得分:0)

你的代码真的不应该工作,而不是产生3个盒子。通常,您必须使用add=TRUE参数一次添加一个图:

boxplot(scfa[,c("acetate")]~as.factor(cl.med), outline=FALSE, ylim=c(0, 0.3))
boxplot(scfa[,c("propionate")]~as.factor(cl.med), outline=FALSE, add=TRUE)

答案 1 :(得分:0)

你要么需要融化'或者'堆叠'您的数据,以便堆叠2个响应列。或者自己拆分数据。以下是第二个选项的示例:

tmp <- split(iris[,c('Sepal.Width','Petal.Width')], iris$Species)
tmp2 <- unlist(tmp, recursive=FALSE)
boxplot(tmp2)