在单个图中单独绘制每个列的盒须图(ggplot2)

时间:2014-09-09 14:33:06

标签: r ggplot2

我有10000行和5列的数据集。其中一列定义了数据的类型(因子类型的变量)。

数据是这样的:

V1  V2      V3    V4     V5    type
1.0  2.3    2.3   4.4    5.6   "1"
0.4  3.1    6.2   5.5    5.8   "2"
1.2  2.2    7.2   4.8    5.9   "3"
 ........

运行以下命令:

p <- ggplot(dataframe, aes(type,V1))
p + geom_boxplot()

enter image description here

但是,我想对所有五个变量进行此操作,并在单个图形中并行显示结果(例如,将图形堆叠在另一个图形之上)。我怎么能用R中的ggplot2呢?

2 个答案:

答案 0 :(得分:4)

您应该将数据重新整形为长格式,然后使用分面。

library(reshape2)
df.long<-melt(dataframe,id.vars="type")
ggplot(df.long,aes(as.factor(type),value))+geom_boxplot()+
      facet_grid(variable~.)

答案 1 :(得分:0)

嗨,谢谢你的回答,但我找到了另一种解决方案。

我跑了这个:

 require(gridExtra)
 p1 <- qplot(type, V1, data=dataframe, geom="boxplot")
 p2 <- qplot(type, V2, data=dataframe, geom="boxplot")
 p3 <- qplot(type, V3, data=dataframe, geom="boxplot")
 p4 <- qplot(type, V4, data=dataframe, geom="boxplot")
 p5 <- qplot(type, V5, data=dataframe, geom="boxplot")
 grid.arrange(p1,p2,p3,p4,p5)

这实现了我想要的,而不将数据帧转换为长格式。