ggplot2绘制方差分析图(代码简化版)

科技   2024-09-27 21:59   陕西  

欢迎关注R语言数据分析指南

本节来更新分享如何使用R进行方差分析并进行可视化,此次在以往代码的基础上使用agricolae来进行事后检验省去了些许步骤,同时在字母标记上通过参数的调整也达到步骤简化的目的。代码非常的简洁、易懂无任何复杂之处。数据为随意构建、无任何意义仅做绘图展示。数据稍后会上传到交流群内,购买过小编绘图文档的朋友可在所加的交流群内获取下载,有需要的朋友可关注文末介绍购买小编的R绘图文档。购买前请咨询,零基础不要买。

一份包含多个统计分析的在线文档内含详细的过程原理解释

https://rstats4ag.org/anova.html#one-way-analysis-of-variance

加载R包

library(tidyverse)
library(magrittr)
install.packages("agricolae")
library(agricolae)
library(ggsci)

数据读取

df <- read_tsv("Anova_data.tsv") %>% pivot_longer(-group)

原始数据为一个常规的多样性指数分析的结果表格进行宽表转长表操作

# A tibble: 50 × 5
   Shannon Chao1   ACE pielou group
     <dbl> <dbl> <dbl>  <dbl> <chr>
 1    6.02 2676. 2716.  0.789 A    
 2    5.20 2181. 2212.  0.710 A    
 3    5.20 2129. 2185.  0.709 A    
 4    5.35 1995. 1998.  0.731 A    
 5    5.40 1734. 1766.  0.748 A    
 6    5.55 1918. 1887.  0.762 B    
 7    5.54 1613. 1603.  0.773 B    
 8    5.89 2268. 2309.  0.784 B    
 9    6.13 2144. 2156.  0.815 B    
10    5.60 1855. 1787.  0.773 B    

方差分析

p <- split(df,list(df$name))
aov_data <- data.frame()

for (i in 1:length(p)) {
  data <- as.data.frame(p[[i]]) %>% setNames(c("group""name""value"))
  anova <- aov(value ~ group, data = data)
  cld <- HSD.test(anova, "group")$groups %>% tibble::rownames_to_column(var = "group")
  dt <- data %>% group_by(group, name) %>%
    summarise(value_mean = mean(value), .groups = 'drop') %>%
    arrange(desc(value_mean)) %>%
    left_join(cld, by = "group")
  aov_data  <- rbind(aov_data,dt)
}

整合数据

dff <- df %>% arrange(name) %>% 
  left_join(.,aov_data %>% select(-value),by=c("name","group"))

数据可视化

ggplot(dff,aes(group,value,fill=group))+
    geom_boxplot(width=0.5,staplewidth = 0.2,outliers=FALSE)+
    geom_text(data=dff %>% group_by(group,name) %>% slice_max(value),
              aes(label=groups,y=value),size.unit = "pt",size=10,hjust=0.5,vjust=-0.5) +
    facet_wrap(.~name,scales = "free_y") +
    scale_fill_simpsons(alpha = 0.8)+
    theme_bw()+
    theme(panel.spacing.x = unit(0.2,"cm"),
          panel.spacing.y = unit(0.1"cm"),
          axis.title = element_blank(),
          strip.text.x = element_text(size=11,face="bold",color="black"),
          strip.background = element_blank(),
          axis.text = element_text(color="black",size=10),
          axis.ticks.x=element_blank(),
          legend.position = "non",
          plot.margin=unit(c(0.3,0.3,0.3,0.3),units=,"cm"))

关注下方公众号下回更新不迷路

购买介绍

本节介绍到此结束,有需要学习R数据可视化的朋友欢迎到淘宝店铺:R语言数据分析指南,购买小编的R语言可视化文档(2024版),购买将赠送2023年的绘图文档内容。目前此文档(2023+2024)已经更新上传200案例文档,每个案例都附有相应的数据和代码,并配有对应的注释文档,方便大家学习和参考。

2024更新的绘图内容将同时包含数据+代码+注释文档+文档清单,2023无目录仅有数据文件夹,小编只分享案例文档,不额外回答问题,无答疑服务,零基础不推荐买。

案例特点

所选案例图均属于个性化分析图表完全适用于论文发表,内容异常丰富两年累计发布案例图200+,2024年6月起提供html版注释文档更加直观易学。文档累计上千人次购买拥有良好的社群交流体验。R代码结构清晰易懂,为防止中文乱码提供单独的注释文档

群友精彩评论

淘宝店铺

2024年已更新案例图展示

2023年案例图展示


R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
 最新文章