时间过了这么久,该交一份答案了。ggplot2包 是一个图形可视化包,并不带统计分析功能,所以统计学分析需要另外去做。
这里加bar和显著性标识,如果了解ggplot2绘图原理中的图层概念的话,就能明白,无非就是在画完分组柱状图后,根据需要自己用ggplot2在图片上画几条折线,加几个星号而已。
这里我用一种geek一点的方法,类似后期在AI中添加的笨办法
开始画图
首先我们创造一个看起来有差异的数据,为了简化统计过程我用rnorm这个函数生成了一堆正太分布的数据。为了让他们有差异,我也特意调整了不同组的mean值。此外为了方便我先生成了4x21的df,然后用reshap2的melt函数将数据转化成ggplot2需要的格式。
## 加载包
library(reshape2)
library(ggplot2)
library(ggpubr)
library(dplyr)
options(stringsAsFactors = F)
## 制造一个有差异的数据为了演示
x
root = c(rnorm(7,10),rnorm(7,5),rnorm(7,21)),
leaf = c(rnorm(7,9),rnorm(7,4),rnorm(7,32)),
stem = rnorm(21,8))
y = melt(x,id.vars = "Type")
head(y)
统计学分析
半路出家,统计学的很烂,没有系统的学过,只是follow网上的流程需要的时候拿来用下,应该有错误,希望大佬指出。 最简单的例子,用t测验检测同组织内(root,leaf,stem)不同样品(A,B,C)的差异:先看数据分布是否为正太分布,方法参考:【R】正态检验与R语言 - REAY - 博客园www.cnblogs.comt测验,方法参考:R语言-t检验_weixin_38322363的博客-CSDN博客_r t检验blog.csdn.net
variable = as.character(unique(y$variable))
Type = as.character(unique(y$Type))
for (i in 1:length(variable)) {
for (j in 1:length(Type)) {
l = variable[i]
z = Type[j]
b = filter(.data = y, variable == l & Type == z)[,3]
a = shapiro.test(b)
qqnorm(b)
print(c("Test Group:",variable[i],Type[j]))
print(a)
}
}
## t检验
y$num = rep(1:7,times = 9)
yy = acast(y,num~variable+Type)