使用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,我可以在图中添加文字。但看起来我的情况有点不同而且不那么容易。在某些只添加绘制数据点值的情况下添加文本要简单得多。但是当你想要添加平均值而不是直方图的值时,这样的情况就是我无法找到解决方案。
请帮忙。感谢。
答案 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",])
我假设您可以将数字格式化为适当的精度,并将它们放在您需要使用此代码的y轴上。