在ggplot2的boxplot中为每个框添加x轴的样本总数

时间:2013-01-27 08:24:30

标签: r ggplot2 boxplot

我可以用经典boxplot来做。这里我们使用内置数据:PlantGrown作为示例。

attach(PlantGrowth)    
boxplot(weight~group,data=PlantGrowth,xaxt="n")
PlantGrowthSum=ddply(PlantGrowth,.(group),summarise,sum=length(weight))

> PlantGrowthSum
   group sum
1  ctrl  10
2  trt1  10
3  trt2  10

axis(1,1:3,paste(PlantGrowthSum$group,"(",PlantGrowthSum$sum,")",sep=""))

Boxplot with sum number for each box

这是一个问题,ggplot2怎么样?

library(ggplot2)
bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group))
    + geom_boxplot()
    +theme(axis.text.x=element_blank())
    +theme(axis.text.x=1:3)
bp

但它失败了。有关应该设置哪个参数的任何线索?

1 个答案:

答案 0 :(得分:5)

在这种情况下,x值是离散的,您应该使用scale_x_discrete()为x轴设置标签。

bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group))+
geom_boxplot()
bp+scale_x_discrete(labels=paste(PlantGrowthSum$group,"(",PlantGrowthSum$sum,")",sep=""))

enter image description here

有关ggplot2图的比例和其他元素的更多信息和示例,请参阅ggplot2文档site