首页 > 解决方案 > 如何在ggplot的条形图上注释某个点?

问题描述

我有这个数据框:

df<-data.frame(month = c("Mar", "Apr", "May", "Jun", "Jul", "Mar", "Apr", 
                      "May", "Jun", "Jul"), 
              site = c("Borth", "Borth", "Borth", "Borth", "Borth", "Clarach", 
                     "Clarach", "Clarach", "Clarach", "Clarach"), 
              organic = c(10,20,30,40,50), 
              inorganic = c(90,80,70,60,50), 
              se = c(2,3,1,4,3))

并使用它在 ggplot 中制作此条形图,这要感谢有人回答我之前的问题:

df %>% 
       tidyr::pivot_longer(c("organic", "inorganic")) %>%
       mutate(se = ifelse(name == "inorganic", NA, se)) %>%
       ggplot(aes(x = site, y = value, fill = name)) + 
       geom_col() + 
   geom_errorbar(aes(min = value - se, max = value + se)) +
   facet_grid(~month) +     
   scale_y_continuous(labels = function(x) paste(x, "%"))

我只是想知道是否可以注释图表以标记一个条形图?可以通过在图表上添加星号,然后将其作为“潜在生殖事件”添加到图例中,或者直接将该文本添加到条形图上?如果可能的话,我希望它出现在 5 月展示 Clarach 的酒吧上。非常感谢您的帮助!!

标签: rggplot2

解决方案


我认为,鉴于您的情节的方向和缺乏空白空间,您的第二个选择是最好的:

df %>% 
       tidyr::pivot_longer(c("organic", "inorganic")) %>%
       mutate(se = ifelse(name == "inorganic", NA, se)) %>%
       ggplot(aes(x = site, y = value, fill = name)) + 
       geom_col() + 
   geom_errorbar(aes(min = value - se, max = value + se)) +
   geom_text(data = data.frame(site = "Borth", value = 55, name = "organic", 
                               month = "Jul"),
             aes(label = "*"), size = 5) +
   facet_grid(~month) +
   scale_y_continuous(labels = function(x) paste(x, "%")) +
  labs(caption = "*Potential reproductive event")

在此处输入图像描述


推荐阅读