我正在尝试将每个分布的平均值的文本添加到每个图。问题是我不怎么调整文本,使它们不会互相重叠。我还想添加类似“ Male Mean = xxx”和“ Female Mean = xxx”的内容。 样本数据是:
cost gender year
1 305.665 Female 2013
2 194.380 Female 2013
3 462.490 Female 2013
4 200.430 Female 2013
5 188.570 Female 2013
6 277.245 Female 2013
代码是:
library(dplyr)
library(ggplot2)
costs<-read.table("cost_gender_1.txt",header=TRUE)
df<-data.frame(costs)
meanData = df %>% group_by(gender, year) %>% summarise(meancost = mean(cost))
ggplot(df, aes(cost,fill=gender)) +
geom_histogram(breaks=seq(0,3000,by=30), position = "dodge") +
facet_wrap(~year) +
labs(x="Costs",y="Number of Members")+ggtitle("All Tiers") +
geom_text(data=meanData, aes(label=round(meancost,1), x=2500, y=2300), colour="#F8766D", hjust=1) +
theme(plot.title = element_text(color="black", size=14, face="bold"))
平均成本为:
gender year meancost
<chr> <int> <dbl>
1 Female 2013 506.
2 Female 2014 502.
3 Female 2015 471.
4 Female 2016 526.
5 Female 2017 507.
6 Female 2018 530.
7 Male 2013 492.
8 Male 2014 481.
9 Male 2015 449.
10 Male 2016 492.
11 Male 2017 469.
12 Male 2018 488.
输出看起来像这样:
答案 0 :(得分:1)
一种解决方案是使用position = "stack"
。否则,只需使用单独的y值即可。...
y = rep(c(2300, 2200), each = n_distinct(meanData$year))