如何使用geom_label将两行标签添加到ggplot中?

时间:2019-12-19 21:43:49

标签: r ggplot2

我正在使用ggplot绘制数据图。我想在每个条形图中添加标签,这些标签总共包含一些尺寸类别,然后将其除以该条形的总值,以显示它们所占的百分比。

我目前正在对ggplot进行分面,以便有两行,每行3个图。我已经成功地制作了我想要的标签,但是它仅对底部3个图的条形图执行此操作。实际上,它将从底部3个图上制作的标签应用于顶部和底部图。

这是我的数据的开头:


head(Russets)
       Variety Rate Hollow Double Knob     AllCWT.AC ValueCWT.AC TuberSize
1  Burbank 2019    1     67     42  351 AVGCWT.AC.0.4    224.9234    0-4 oz
2  Burbank 2019    2     65     43  391 AVGCWT.AC.0.4    226.9199    0-4 oz
3  Burbank 2019    3     64     42  362 AVGCWT.AC.0.4    226.9676    0-4 oz
4  Burbank 2019    4     63     43  348 AVGCWT.AC.0.4    237.4483    0-4 oz
5  Burbank 2019    5     67     48  357 AVGCWT.AC.0.4    227.8079    0-4 oz
6 Norkotah 2019    1     73     56  371 AVGCWT.AC.0.4    168.3245    0-4 oz

这是我用来计算百分比的代码:

everythingRus = Russets %>% 
 filter(!(TuberSize == "Culls")) %>%
 group_by(Variety,Rate) %>%
 summarize(total = sum(ValueCWT.AC))

mrkRus = Russets %>% 
 filter(TuberSize == "6-10 oz" | TuberSize == "10-13 oz" |TuberSize == "13+ oz") %>%
 group_by(Variety,Rate) %>%
 summarize(mrktotal = sum(ValueCWT.AC))

mrk_evyRus = everythingRus %>% left_join(mrkRus) %>%
 mutate(per = paste0((round(mrktotal/total,2))*100,"%"))


perMrkRus <- data.frame(percentRus = mrk_evyRus$per, y = rep(100,times = 15), 
                    trt = rep(c(1,2,3,4, 5),times = 3))

这是基本的ggplot:

RussetPlot <-ggplot(data=Russets,aes(x=Rate,y=ValueCWT.AC,group=interaction(TuberSize,Variety),fill=(TuberSize))) +
  geom_col(position = "stack",inherit.aes = TRUE) +
  facet_wrap(~Variety,nrow=2) +
  geom_label(data = perMrkRus, aes(x= trt,y=y,label = percentRus), inherit.aes=F)

有人知道我如何创建适用于正确条形图的新标签集吗?再次,问题是这适用于底部3个图,但不适用于顶部3个图。在此先感谢您的帮助!

0 个答案:

没有答案