带有因子的多列的ggplot boxplot

时间:2014-10-02 15:54:21

标签: r ggplot2

我是ggplot2的新手,我想在同一个绘图中绘制多个数字列的boxplot,并将boxplot按最后一列的因子分组,数据帧的标题如下:

id var1 var2 var3 factor

我知道我能做到:

ggplot(df,aes(x=factor,y=var1)+geom_boxplot()

对于每个变量。

如何将它们与ggplot2一起绘制?基础图形实用程序boxplot(df[,-c(id,factor)]将它们一起绘制。

2 个答案:

答案 0 :(得分:9)

以下作品"在同一图中绘制多个数字列的箱线图,并将箱线图按因子分组":

mm = melt(df, id=c('id','factor.col'))
ggplot(mm)+geom_boxplot(aes(x=paste(variable,factor.col,sep="_"), y=value))

enter image description here

数据:

> df
   id          var1       var2       var3 factor.col
1   1  0.0562941632  1.3055892 -1.7553986          c
2   2  0.3187487914 -0.6434729  0.7582403          a
3   3 -1.0120881740  0.3898366  0.4790115          c
4   4 -0.7576871261  0.9474247  0.2180341          b
5   5 -0.2895981608  0.2388043 -0.4407693          a
6   6  0.0005306311  0.9494667 -0.2604795          c
7   7  0.2022893934 -0.3095420 -1.9483369          c
8   8 -0.8179580833 -0.7891642  0.7662824          b
9   9 -0.7553554525  0.2734337 -0.7145471          b
10 10  0.4206429078 -0.6171774  0.6274320          c
> 

以下也可以使用:

ggplot(mm)+geom_boxplot(aes(x=variable, y=value))+facet_grid(.~factor.col)

enter image description here

答案 1 :(得分:1)

当您使用ggplot2时,您的数据布局需要与基本图形的布局略有不同

#Your sample data...
df= data.frame(id = 1:10,
           var1 = rnorm(10),
           var2 = rnorm(10),
           var3= rnorm(10),
           factor.col= LETTERS[1:10]
)
# Use the reshape2 package to merge the columns by id and factor.col
library(reshape2)
df_long <- melt(df, id=c("id","factor.col"))
# And now plot the boxplots
library(ggplot2)
ggplot(df_long,aes(x=factor.col,y=value)) + geom_boxplot()