我是ggplot2
的新手,我想在同一个绘图中绘制多个数字列的boxplot,并将boxplot按最后一列的因子分组,数据帧的标题如下:
id var1 var2 var3 factor
我知道我能做到:
ggplot(df,aes(x=factor,y=var1)+geom_boxplot()
对于每个变量。
如何将它们与ggplot2
一起绘制?基础图形实用程序boxplot(df[,-c(id,factor)]
将它们一起绘制。
答案 0 :(得分:9)
以下作品"在同一图中绘制多个数字列的箱线图,并将箱线图按因子分组":
mm = melt(df, id=c('id','factor.col'))
ggplot(mm)+geom_boxplot(aes(x=paste(variable,factor.col,sep="_"), y=value))
数据:
> 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)
答案 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()