使用以下命令在 ggbox 图中标记单个框时乱序标签:stat_summary(geom = 'text', label = letters

Out of order labels when labeling individual boxes in ggbox plot using: stat_summary(geom = 'text', label = letters

希望在 ggplot 创建的箱线图中标记各个框。正如此 post [在 ggplot 箱线图中标记单个框}( 中的答案所建议的那样,我正在使用 stat_summary 函数来执行此操作。

论坛中的示例代码post:

ggplot(mtcars, aes(factor(cyl), mpg)) +
  geom_boxplot() +
  stat_summary(geom = 'text', label = letters[1:3], fun.y = max, vjust = -1)

但是,当我尝试为自己的情节重新创建时,标签出现了问题。每个框的标签都没有被标记为“a”、“b”、“c”等。从左到右出现在图上,但出现了“a”、“b”、“c”标签按轴标签的字母顺序排列。有什么简单的方法可以纠正这个问题吗?

我的代码示例:

maxn_topo_plot<- ggplot(wide.df2, aes(x=topo, y=sum_maxn)) + 
  geom_boxplot(show.legend = FALSE) + theme_pubclean(base_size = 18) +  
  xlab("Island Geomorpholgy") + ylab("Shark MaxN")  + 
  scale_x_discrete(limits=c("open atoll","closed atoll","near atoll", 
  "high barrier", "high rocky", "high fringing ")) + 
  theme(axis.text.x =  element_text(angle = 12)) +
  stat_summary(geom = 'text',  
  label = c("a","b","c","d", "e", "g"), 
  fun = max, vjust = -1, size= 6) 

maxn_topo_plot

这是因为 label() 考虑了变量“topo”的因子水平。请注意 a b c .. 按照字母顺序排序。

当您使用 scale_x_discrete 更改 X 轴的顺序时,您不会更改因子水平的顺序。

就像我在你的另一个问题中提到的那样。更改 X 的因子水平而不是更改 scale_x_discrete.

    maxn_topo_plot<- ggplot(wide.df2, aes(x= factor(topo,
                                              levels = c("open atoll",
                                                         "closed atoll",
                                                         "near atoll", 
                                                         "high barrier", 
                                                         "high rocky", 
                                                         "high fringing")), y=sum_maxn)) + 
      geom_boxplot(show.legend = FALSE)  +  
      xlab("Island Geomorpholgy") + 
      ylab("Shark MaxN") + 
      theme_pubclean(base_size = 20) +
      theme(axis.text.x =  element_text(angle = 12))+
      stat_summary(geom = 'text',  
         label = c("a","b","c","d", "e", "g"), 
          fun = max, vjust = -1, size= 6)