R 中标准化两列数据差异较大的数据

实验室的师弟给了两个材料,36个基因表达的数据,其中一个材料的所有基因表达的量都比另一个材料所有基因的表达量要高,而且在这36个基因中,有几个基因表达量在两个材料中都远大于其他基因。 如何有差别的做出这两列基因数据的heatmap呢? 如果采用传统的pheatmap包中的pheatmap函数,在对行进行标准化的时候,发现每个材料中的基因表达量都是相同的,表达量高的那个材料全是红色,表达量低的那个材料全是蓝色。 达不到区分不同的基因表达有差异的效果。 因此,采用以下标准化的方法,可以有效的展示材料之间的差异,也可以展示不同基因之间的差异。 

数据如下:

  Col h3
gene1 0.818075197 2.398748858
gene2 0.480627491 0.926058452
gene3 0.213218511 0.408803941
gene4 61.79509635 137.4037627
gene5 4.985920179 10.09193546
gene6 16.01706302 24.19177474
gene7 2.641230651 4.721488137
gene8 2.460139283 14.49196975
gene9 0.290186472 1.103608313
gene10 0.360995519 0.808775839
gene11 0.928863409 1.491343848
gene12 2.359084408 5.967281796
gene13 3.05767779 5.005372632
gene14 0.229088313 0.585076526
gene15 0.659311953 1.871574262
gene16 8.77451154 16.48388491
gene17 39.88990698 62.90271955
gene18 0.9597624 2.790069555
gene19 4.648151688 11.4454019
gene20 0.229843484 0.924642942
gene21 0.338031549 0.668446401
gene22 11.14846849 19.54088284
gene23 0.510737569 0.897929633
gene24 0.919022625 1.646921958
gene25 0.245724982 0.430445958
gene26 5.832228686 17.82051493
gene27 6.656722213 30.58322923
gene28 8.506724235 16.65287171
gene29 0.28035487 0.618129318
gene30 2.728988303 6.424190218
gene31 1.28509406 2.285384937
gene32 1.284149244 1.95134906
gene33 0.689166751 1.078235097
gene34 2.593251311 6.273472703
gene35 1.571382479 3.177707529
gene36 0.91827417 1.837563294

 

采用pheatmap, scale = "row" 得到的图如下:

R 中标准化两列数据差异较大的数据_第1张图片

很明显,两个材料差别很大,基因之间没有差异。 如果对每行只进行标准化,而不进行中心化,则可以区分出来基因之间的差异。

代码如下:

library(pheatmap)
data = read.table(file="~/Downloads/Col.txt",header = T)
plot_data = apply(as.matrix(data),1,function(x) scale(x,center = F,scale = T))
plot_data2 = t(plot_data)
dimnames(plot_data2) <- list(row.names(data), c("Col","h3"))
pheatmap(plot_data2,scale = "none",show_colnames = T,show_rownames = T)

R 中标准化两列数据差异较大的数据_第2张图片

因此,如果要展示的是差别较大的两列数据时,可以对数据只进行标准化,而不进行中心化,这样能避免以上所有基因在一个材料中都是一样的情况。

 

你可能感兴趣的:(R,语言——必须要会的,数据分析,可视化)