PCR数据要有三列,一列是组名,一列是内参基因的CT值,一列是目的基因的CT值,计算方法是-2∆∆Ct 法,实现一步出图用的是ggpubr
,实现截断则是Y叔出手的ggbreak
- 比如下面这个表,定义为
PCR.csv
,放桌面上:
group | GAPDH | XXX |
---|---|---|
control | 12.53 | 23.14 |
control | 12.54 | 22.92 |
control | 12.25 | 22.65 |
treat | 12.74 | 18.86 |
treat | 12.78 | 18.87 |
treat | 12.76 | 18.89 |
读取表格,并计算相对mRNA定量
PCR <- read_csv("~/Desktop/PCR.csv") #读表
PCR$dct=PCR$XXX-PCR$GAPDH ##目的基因Ct-内存基因Ct,即∆Ct
PCR$ddct=PCR$dct-mean(PCR$dct[1:3]) ##∆Ct-对照组Ct均值,即∆∆Ct
PCR$mrna=2^-PCR$ddct ##取-∆∆Ct的2次放,即-2^∆∆Ct
一步出图,ggpubr
自带计算,均值、标准差、标准误,CI、P值都不在话下
library(ggpubr)
ggbarplot(PCR,
'group',
'mrna',
fill = 'group', # 按组填充颜色,当然如果喜欢单色,就用‘black’
palette = "jco", ## "npg", "aaas", "lancet"等主题任意选
add = "mean_sd",,xlab = F,ylab = 'Relative mRNA expression',legend='none',
ggtheme = theme_bw()#选一个自己喜欢的背景
)+stat_compare_means(method = 't.test')
简单的优化一下,用上ggprism
这个包,用上prism
主题,冒充一下上用graphpad做的图
install.packages("ggprism")
library(ggprism)
ggbarplot(PCR,
'group',
'mrna',
fill = "black",
add = "mean_sd",
xlab = F,ylab = 'Relative mRNA expression',legend='none',
ggtheme = theme_prism()
)+stat_compare_means(aes(label = ..p.signif..), ## 改成星星
comparisons = list(c('control','treat')), ## 添加一下列表
method = 't.test')
最后截断一下Y值
以前很少有包可以完美实现这个功能,我以前写过R做截断柱状图并加显著性统计可以实现,但Y叔出手写了个ggbreak
包,完美的就解决了
install.packages("ggbreak")
library(ggbreak)
p<-ggbarplot(PCR,
'group',
'mrna',
fill = "black",
add = "mean_sd",
xlab = F,ylab = 'Relative mRNA expression',legend='none',
ggtheme = theme_prism()
)+stat_compare_means(aes(label = ..p.signif..),
comparisons = list(c('control','treat')),
method = 't.test')
## 只要一句话就解决了,1.5是下轴,15是上轴,当然也可以三截断,定义宽度和高度,具体的自己可以研究
p+scale_y_break(c(1.5, 15) ,scales = c(1,10))
其实还有一个pcr
的包也能简单实现,而且自动计算mRNA相对表达定量,而且对照组定量是1,更加科学,但是表格只是两列CT值,还要重新定义组,所以要先提取一下表格,处理一下数据。
install.packages("pcr")
library(pcr)
ct1<-PCR[,-c(1,4:6)]
group_var <- rep(c('control', 'treat'), each = 3)
result<-pcr_analyze(ct1,
group_var = group_var,
reference_gene = 'GAPDH',
reference_group = 'control',
method = 'delta_delta_ct')
其实pcr
这个包也是可以直接出图的,还可以计算多基因,缺点是P值要另算,不能直接添加,所以要后期AI,出图直接加一句plot=T
library(pcr)
pcr_analyze(ct1,
group_var = group_var,
reference_gene = 'GAPDH',
reference_group = 'control',
method = 'delta_delta_ct',plot=T)
也可以截断,还是ggbreak
pcr_analyze(ct1,
group_var = group_var,
reference_gene = 'GAPDH',
reference_group = 'control',
method = 'delta_delta_ct',plot=T)+scale_y_break(c(1.5, 15) ,scales = c(1,10))+theme_prism()