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

问题描述 投票:0回答:1

我正在尝试使用每个分布的平均值为每个绘图添加文本。问题是我不知道如何调整文本以使它们不会彼此叠加。我还想添加类似“男性均值= xxx”和“女性意味着= 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

r ggplot2 facet-wrap
1个回答
1
投票

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

y = rep(c(2300, 2200), each = n_distinct(meanData$year))
© www.soinside.com 2019 - 2024. All rights reserved.