如何调整每个面板中的文字?

时间:2019-04-26 17:59:45

标签: r ggplot2 facet-wrap

我正在尝试将每个分布的平均值的文本添加到每个图。问题是我不怎么调整文本,使它们不会互相重叠。我还想添加类似“ 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.

输出看起来像这样:

enter image description here

1 个答案:

答案 0 :(得分:1)

一种解决方案是使用position = "stack"。否则,只需使用单独的y值即可。...

y = rep(c(2300, 2200), each = n_distinct(meanData$year))