首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从显著性检验到柱状图梭哈到底——R语言

大量的网上的关于R语言关于做柱状图和显著性检验的教程很多,但是通常他们是分开的,或者说是提前做出显著性然后手动标记上去。

这里我提供了一种只需要排列好数据,直接从显著性检验到柱状图的方案,并且是复合的柱状图。

遗憾的是我对ggplot绘图相当不熟悉,关于用ggplot修饰图形的工作还得读者查阅相关资料完成。

图像示例:

数据示例(三个重复):

file.choose()data_plot = read.delim('C:\\Users\\lbzzj\\Desktop\\计量内稳态\\野外化学计量.csv',fileEncoding = 'GBK', sep = ',') #install.packages("tidyverse")library(dplyr)plot_data = data_plot %>%group_by(Spe, Site) %>% summarize( Mean_Value = mean(C), SE_Value = sd(C) / sqrt(n()))#分组求均值和标准误#添加显著性的包#install.packages("ggpubr")library(ggpubr)

#解决中文乱码的包#install.packages("showtext")library(showtext)

#install.packages("stats")library(stats)#install.packages("agricolae")library(agricolae)#install.packages("multcomp")library(multcomp)#install.packages("ggprism")library(ggprism)

##蒙古冰草 #数据的方差检验(蒙古冰草,前12行)variance_1 = aov(C ~ Site, data = data_plot[1:12,])variance_1#进行多重比较,不矫正P值#MC_1 = LSD.test(variance_1, "Site", p.adj = "none") #结果显示:标记字母法out$groupMC_1 = SNK.test(variance_1, "Site", console = T) #结果显示:标记字母法out$group,tukey检验GB_1 = group_by(data_plot[1:12,], Site)#数据转换error_1 = summarise(GB_1, sd(C, na.rm = T))#计算误差#数据整理error_1_M = merge(error_1, MC_1$groups, by.x = "Site", by.y = "row.names", all = F)#合并数据(蒙古冰草)

##猪毛蒿#数据的方差检验(牛枝子,后12行)variance_2 = aov(C ~ Site, data = data_plot[13:24,])variance_2#进行多重比较,不矫正P值MC_2 = SNK.test(variance_2, "Site", console = F) #结果显示:标记字母法out$groupGB_2 = group_by(data_plot[13:24,], Site)#数据转换error_2 = summarise(GB_2, sd(C, na.rm = T))#计算误差#数据整理error_2_N = merge(error_2, MC_2$groups, by.x = "Site", by.y = "row.names", all = F)#合并数据(牛枝子)

#cbind:叠加所以的列,rbind叠加所以的行error_3 = rbind(error_2_N,error_1_M)#猪毛蒿在前,蒙古冰草在后error_4 = cbind(plot_data$Spe, error_3)

# 改变所有列的名称,重新赋予一个向量colnames(error_4)

#基础画图library(ggplot2)

plot = ggplot(error_4, aes(x = Site, y = C, fill = Spe))+ scale_fill_manual(values = c("black","white"))+ geom_bar(stat = 'identity', position = "dodge", alpha = .7, colour = 'black', width = .6,)+#图形为直方图 geom_errorbar(aes(x = Site, ymin = C - sd, ymax = C + sd), stat = 'identity', position = position_dodge(0.6), width=.1)+#误差棒 geom_text(aes(x = Site, y = C + 20, label = significance), position = position_dodge(0.6), color = "black",fontface = "bold")+#添加字母标记 theme_prism(palette = "floral", base_fontface = "plain",#字体样式,可选bold, plain, italic base_family = "serif", #字体格式,可选serif, sans, mono, Arial等 base_size = 14, #图形的字体大小 base_line_size = 0.8, #坐标轴的粗细 axis_text_angle = 45)+#可选值有0,45,90,270,修改文本的角度

labs(x = "", y = expression(paste("有机碳 carbon content (g·kg"^"-1)")))+#设置右边的标签 scale_y_continuous(limits = c(0, 550), breaks = seq(0, 550, 90))+ theme(legend.position=c(0.5, 0.95))+ guides(fill = guide_legend(direction = "horizontal",keywidth = unit(20, 'pt'), keyheight = unit(10, 'pt'), label.theme = element_text(size = 8,face = 'plain')))#调整图例里面文字大小 plot

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OyVcCZY0hsaehefB19sNli_Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券