首页 > 解决方案 > 如何使用 x 轴上的两个不同变量在图形上添加紧凑字母

问题描述

是否可以使用条形图和箱线图顶部的紧凑字母来显示重要组?我找不到 x 轴中两个不同变量的解决方案(例如施肥和年份)。如果试验 1 和试验 2 只有一个因素,我添加字母没有问题,所以我认为问题出在指定层次结构(试验 1/受精:添加这些字母,试验 1/年;添加这些字母,试验 2/施肥;添加这些字母,依此类推)。我添加了一个示例,其中添加了通过将图片导入 PP 并手动添加字母来添加字母(如果其他一切都失败了,那是糟糕的选择)在此处输入图像描述

GGPLOT2 - 用于绘图 GGH4X - 用于嵌套分面包装 PATCHWORK - 合并绘图

代码:

    d1 <- IOSDV1 %>% 
      select(x = SISTEM, Sr, Rb, Br, POSKUS, ORDER) %>% 
      mutate(name = "SISTEM", name = factor(name, levels = c("SISTEM", "Leto")))
    
    d2 <- IOSDV1 %>% 
      select(x = Leto, Sr, Rb, Br, POSKUS, ORDER) %>% 
      mutate(name = "Leto", name = factor(name, levels = c("SISTEM", "Leto")))
    
    base <- ggplot(mapping = aes(x = fct_reorder(x, ORDER), y = Sr)) +
    stat_summary(data = d1, fun.data = mean_cl_normal, show.legend = FALSE, color = "black", size = 0.5,  shape=21, position=position_dodge(0.95),geom="errorbar", width = 0.2) + 
     stat_summary(data = d1, fun.y = mean, position=position_dodge(width=0.95), geom="bar", show.legend = FALSE, color = "black", size = 0.5, fill="lightgoldenrodyellow") +
    geom_boxplot(data = d2, fill="lightgoldenrodyellow", outlier.size = 0.2) +  
    stat_summary(data = d2, fun = mean, geom="crossbar", show.legend = FALSE, color = "red", size=0.3, width=0.75) +
      labs(x = NULL, y = "Sr (\u03BCg/100 g)")  +
      #theme_classic(base_family = "Palatino Linotype") +
      theme_classic() +
      theme(axis.text = element_text(colour = "black", size = 8), 
            axis.title = element_text(colour = "black", size = 8, face = "bold"), 
            axis.text.x = element_text(angle = 60, vjust = 1, hjust = 1)) +
      theme(strip.background = element_blank())
    
    a <- base + facet_nested_wrap(~POSKUS+name, nrow = 2, scales = "free_x", labeller = function(d) list(as.character(d$POSKUS)))


(a | d) + plot_annotation(tag_levels = c('A', '1')) & theme(text = element_text('Palatino Linotype'))
ggsave(filename = "question.png", width=6, height=4, dpi = 600, type = "cairo")

标签: rggplot2facet-wrapletter

解决方案


推荐阅读