将文本添加到刻面直方图

时间:2014-10-27 01:21:49

标签: r ggplot2

使用ggplot2我使用以下代码制作了刻面直方图。

library(ggplot2)
library(plyr)

df1 <- data.frame(monthNo = rep(month.abb[1:5],20),
classifier = c(rep("a",50),rep("b",50)),
    values = c(seq(1,10,length.out=50),seq(11,20,length.out=50))
    )

means <- ddply (df1,
    c(.(monthNo),.(classifier)),
    summarize,
    Mean=mean(values)
    )


ggplot(df1,
aes(x=values, colour=as.factor(classifier))) +
geom_histogram() +
facet_wrap(~monthNo,ncol=1) +
geom_vline(data=means, aes(xintercept=Mean, colour=as.factor(classifier)),
           linetype="dashed", size=1) 

显示每月平均值的垂直线将保留。

但我想在这些垂直线上添加文字,显示每个月的平均值。这些手段来自&#39;手段&#39;数据框。

我查看了geom_text,我可以在图中添加文字。但看起来我的情况有点不同而且不那么容易。在某些只添加绘制数据点值的情况下添加文本要简单得多。但是当你想要添加平均值而不是直方图的值时,这样的情况就是我无法找到解决方案。

请帮忙。感谢。

1 个答案:

答案 0 :(得分:3)

注意到可能的重复(我的另一个答案),这里的解决方案可能不是(最初/直观)明显的。如果将geom_text电话分成两个(每个classifier),您就可以执行所需操作:

ggplot(df1, aes(x=values, fill=as.factor(classifier))) +
  geom_histogram() +
  facet_wrap(~monthNo, ncol=1) +
  geom_vline(data=means, aes(xintercept=Mean, colour=as.factor(classifier)),
             linetype="dashed", size=1) +
  geom_text(y=0.5, aes(x=Mean, label=Mean),
            data=means[means$classifier=="a",]) +
  geom_text(y=0.5, aes(x=Mean, label=Mean),
            data=means[means$classifier=="b",]) 

enter image description here

我假设您可以将数字格式化为适当的精度,并将它们放在您需要使用此代码的y轴上。