给出以下示例:
set.seed(1)
tmp.data<-data.frame(group=rep(c("x","y","z"),8),
year=rep(c(2000:2003),6),
value=runif(24, 1, 100))
我可以创建一个带有群组隶属关系的简单箱图:
boxplot.example<-ggplot(data=tmp.data)
boxplot.example.simple<-boxplot.example +
geom_boxplot(aes(x=group,y=value))
# plot
boxplot.example.simple
但是,我想在同一图表中为每个组和年份创建单独的Boxplots。
我尝试使用ggplot的组函数:
boxplot.example.yearly<-boxplot.example +
geom_boxplot(aes(x=year,y=value, group=group))
# plot
boxplot.example.yearly # does not work as expected
然而,分组没有按预期工作。
然后我尝试使用split
和llply
这样:
require("plyr")
boxplot.example.yearly.2<-ggplot() +
llply(.data=split(tmp.data,tmp.data$year),.fun=geom_boxplot,
aes(x=year,y=value))
# Error: ggplot2 doesn't know how to deal with data of class uneval
这可能是因为ggplot函数中未指定data参数。
那么如何将箱形图绘制成一个按group
分组的年度观测值和年度观测值?
答案 0 :(得分:1)
由于您希望在同一图表中为每个组和年份生成箱图,我认为您的数据集已准备就绪,您可以执行以下操作:
p <- ggplot(tmp.data, aes(factor(year), fill=group, value))
p + geom_boxplot()