R语言学习 - 热图美化 (数值标准化和调整坐标轴顺序)
生物信息學(xué)習(xí)的正確姿勢
NGS系列文章包括NGS基礎(chǔ)、在線繪圖、轉(zhuǎn)錄組分析?(Nature重磅綜述|關(guān)于RNA-seq你想知道的全在這)、ChIP-seq分析?(ChIP-seq基本分析流程)、單細(xì)胞測序分析?(重磅綜述:三萬字長文讀懂單細(xì)胞RNA測序分析的最佳實(shí)踐教程)、DNA甲基化分析、重測序分析、GEO數(shù)據(jù)挖掘(典型醫(yī)學(xué)設(shè)計實(shí)驗(yàn)GEO數(shù)據(jù)分析 (step-by-step))、批次效應(yīng)處理等內(nèi)容。
溫故知新
R語言 - 入門環(huán)境Rstudio
R語言 - 熱圖繪制 (heatmap)
R語言 - 基礎(chǔ)概念和矩陣操作
R語言 - 熱圖簡化
熱圖美化
上一期的繪圖命令中,最后一行的操作抹去了之前設(shè)定的橫軸標(biāo)記的旋轉(zhuǎn),最后出來的圖比較難看。上次我們是這么寫的
為了使橫軸旋轉(zhuǎn)45度,需要把這句話:
theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1))放在theme_bw()的后面。
p <- p + theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1))最后的圖應(yīng)該是下邊樣子的。
上圖的測試數(shù)據(jù),數(shù)值的分布比較均一,相差不是太大,但是Gene_4和Gene_5由于整體的值低于其它的基因,從顏色上看,不仔細(xì)看,看不出差別。
實(shí)際應(yīng)用中,異常值的出現(xiàn)會毀掉一張熱圖,如下是一個例子。
data <- c(rnorm(5,mean=5), rnorm(5,mean=20), rnorm(5, mean=100), c(600,700,800,900,10000)) data <- matrix(data, ncol=5, byrow=T) data <- as.data.frame(data) rownames(data) <- letters[1:4] colnames(data) <- paste("Grp", 1:5, sep="_") data ? ? ? Grp_1 ? ? ?Grp_2 ? ? ?Grp_3 ? ? ?Grp_4 ? ? ? ?Grp_5 a ? 5.958073 ? 5.843652 ? 3.225465 ? 4.886184 ? ? 3.411362 b ?19.630582 ?20.376791 ?20.744580 ?18.534027 ? ?20.638288 c 100.351299 ?99.849900 102.197343 ?98.583629 ? ?99.540488 d 600.000000 700.000000 800.000000 900.000000 10000.000000data$ID <- rownames(data) data ? ? ? Grp_1 ? ? ?Grp_2 ? ? ?Grp_3 ? ? ?Grp_4 ? ? ? ?Grp_5 ID a ? 5.958073 ? 5.843652 ? 3.225465 ? 4.886184 ? ? 3.411362 ?a b ?19.630582 ?20.376791 ?20.744580 ?18.534027 ? ?20.638288 ?b c 100.351299 ?99.849900 102.197343 ?98.583629 ? ?99.540488 ?c d 600.000000 700.000000 800.000000 900.000000 10000.000000 ?ddata_m <- melt(data, id.vars=c("ID")) head(data_m) ?ID variable ? ? ?value 1 ?a ? ?Grp_1 ? 5.958073 2 ?b ? ?Grp_1 ?19.630582 3 ?c ? ?Grp_1 100.351299 4 ?d ? ?Grp_1 600.000000 5 ?a ? ?Grp_2 ? 5.843652 6 ?b ? ?Grp_2 ?20.376791p <- ggplot(data_m, aes(x=variable,y=ID)) + xlab("samples") + theme_bw() + theme(panel.grid.major = element_blank()) + theme(legend.key=element_blank()) ?+ theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1)) + theme(legend.position="top") + ?geom_tile(aes(fill=value)) + scale_fill_gradient(low = "white", high = "red") p dev.off()輸出的結(jié)果是這個樣子的
圖中只有右上角可以看到紅色,其他地方就沒了顏色的差異。這通常不是我們想要的。為了更好的可視化效果,需要對數(shù)據(jù)做些預(yù)處理,主要有 對數(shù)轉(zhuǎn)換,Z-score轉(zhuǎn)換,抹去異常值,非線性顏色等方式。
對數(shù)轉(zhuǎn)換
為了方便描述,假設(shè)下面的數(shù)據(jù)是基因表達(dá)數(shù)據(jù),4個基因 (a, b, c, d)和5個樣品 (Grp_1, Grp_2, Grp_3, Grp_4),矩陣中的值代表基因表達(dá)FPKM值。
data <- c(rnorm(5,mean=5), rnorm(5,mean=20), rnorm(5, mean=100), c(600,700,800,900,10000)) data <- matrix(data, ncol=5, byrow=T) data <- as.data.frame(data) rownames(data) <- letters[1:4] colnames(data) <- paste("Grp", 1:5, sep="_") data ? ?Grp_1 ? ? ?Grp_2 ? ? ?Grp_3 ? ? ?Grp_4 ? ? ? ?Grp_5 a ? 6.61047 ?20.946720 100.133106 600.000000 ? ? 5.267921 b ?20.80792 ?99.865962 700.000000 ? 3.737228 ? ?19.289715 c 100.06930 800.000000 ? 6.252753 ?21.464081 ? ?98.607518 d 900.00000 ? 3.362886 ?20.334078 101.117728 10000.000000# 對數(shù)轉(zhuǎn)換 # +1是為了防止對0取對數(shù);是加1還是加個更小的值取決于數(shù)據(jù)的分布。 # 加的值一般認(rèn)為是檢測的低閾值,低于這個值的數(shù)字之間的差異可以忽略。 data_log <- log2(data+1) data_log ? ?Grp_1 ? ?Grp_2 ? ?Grp_3 ? ?Grp_4 ? ? Grp_5 a 2.927986 4.455933 6.660112 9.231221 ?2.647987 b 4.446780 6.656296 9.453271 2.244043 ?4.342677 c 6.659201 9.645658 2.858529 4.489548 ?6.638183 d 9.815383 2.125283 4.415088 6.674090 13.287857data_log$ID = rownames(data_log) data_log_m = melt(data_log, id.vars=c("ID"))p <- ggplot(data_log_m, aes(x=variable,y=ID)) + xlab("samples") + ylab(NULL) + theme_bw() + theme(panel.grid.major = element_blank()) + theme(legend.key=element_blank()) + theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1)) + theme(legend.position="top") + ?geom_tile(aes(fill=value)) + scale_fill_gradient(low = "white", high = "red") ggsave(p, filename="heatmap_log.pdf", width=8, height=12, units=c("cm"),colormodel="srgb")對數(shù)轉(zhuǎn)換后的數(shù)據(jù),看起來就清晰的多了。而且對數(shù)轉(zhuǎn)換后,數(shù)據(jù)還保留著之前的變化趨勢,不只是基因在不同樣品之間的表達(dá)可比 (同一行的不同列),不同基因在同一樣品的值也可比 (同一列的不同行) (不同基因之間比較表達(dá)值存在理論上的問題,即便是按照長度標(biāo)準(zhǔn)化之后的FPKM也不代表基因之間是完全可比的)。
Z-score轉(zhuǎn)換
Z-score又稱為標(biāo)準(zhǔn)分?jǐn)?shù),是一組數(shù)中的每個數(shù)減去這一組數(shù)的平均值再除以這一組數(shù)的標(biāo)準(zhǔn)差,代表的是原始分?jǐn)?shù)距離原始平均值的距離,以標(biāo)準(zhǔn)差為單位。可以對不同分布的各原始分?jǐn)?shù)進(jìn)行比較,用來反映數(shù)據(jù)的相對變化趨勢,而非絕對變化量。
data_ori <- "Grp_1;Grp_2;Grp_3;Grp_4;Grp_5 a;6.6;20.9;100.1;600.0;5.2 b;20.8;99.8;700.0;3.7;19.2 c;100.0;800.0;6.2;21.4;98.6 d;900;3.3;20.3;101.1;10000"data <- read.table(text=data_ori, header=T, row.names=1, sep=";", quote="")# 去掉方差為0的行,也就是值全都一致的行 data <- data[apply(data,1,var)!=0,]data ?Grp_1 Grp_2 Grp_3 Grp_4 ? Grp_5 a ? 6.6 ?20.9 100.1 600.0 ? ? 5.2 b ?20.8 ?99.8 700.0 ? 3.7 ? ?19.2 c 100.0 800.0 ? 6.2 ?21.4 ? ?98.6 d 900.0 ? 3.3 ?20.3 101.1 10000.0# 標(biāo)準(zhǔn)化數(shù)據(jù),獲得Z-score,并轉(zhuǎn)換為data.frame data_scale <- as.data.frame(t(apply(data,1,scale)))# 重命名列 colnames(data_scale) <- colnames(data) data_scale ? ? ? Grp_1 ? ? ?Grp_2 ? ? ?Grp_3 ? ? ?Grp_4 ? ? ?Grp_5 a -0.5456953 -0.4899405 -0.1811446 ?1.7679341 -0.5511538 b -0.4940465 -0.2301542 ?1.7747592 -0.5511674 -0.4993911 c -0.3139042 ?1.7740182 -0.5936858 -0.5483481 -0.3180801 d -0.2983707 -0.5033986 -0.4995116 -0.4810369 ?1.7823177data_scale$ID = rownames(data_scale) data_scale_m = melt(data_scale, id.vars=c("ID"))p <- ggplot(data_scale_m, aes(x=variable,y=ID)) + xlab("samples") + ylab(NULL) + theme_bw() + theme(panel.grid.major = element_blank()) + theme(legend.key=element_blank()) + theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1)) + ?geom_tile(aes(fill=value)) + scale_fill_gradient(low = "white", high = "red") ggsave(p, filename="heatmap_scale.pdf", width=8, height=12, units=c("cm"),colormodel="srgb")Z-score轉(zhuǎn)換后,顏色分布也相對均一了,每個基因在不同樣品之間的表達(dá)的高低一目了然。但是不同基因之間就完全不可比了。
抹去異常值
粗暴一點(diǎn),假設(shè)檢測飽和度為100,大于100的值都視為100對待。
data_ori <- "Grp_1;Grp_2;Grp_3;Grp_4;Grp_5 a;6.6;20.9;100.1;600.0;5.2 b;20.8;99.8;700.0;3.7;19.2 c;100.0;800.0;6.2;21.4;98.6 d;900;3.3;20.3;101.1;10000"data <- read.table(text=data_ori, header=T, row.names=1, sep=";", quote="")data[data>100] <- 100 data ?Grp_1 Grp_2 Grp_3 Grp_4 Grp_5 a ? 6.6 ?20.9 100.0 100.0 ? 5.2 b ?20.8 ?99.8 100.0 ? 3.7 ?19.2 c 100.0 100.0 ? 6.2 ?21.4 ?98.6 d 100.0 ? 3.3 ?20.3 100.0 100.0data$ID = rownames(data) data_m = melt(data, id.vars=c("ID"))p <- ggplot(data_m, aes(x=variable,y=ID)) + xlab("samples") + ylab(NULL) + theme_bw() + theme(panel.grid.major = element_blank()) + theme(legend.key=element_blank()) + theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1)) + ?geom_tile(aes(fill=value)) + scale_fill_gradient(low = "white", high = "red") ggsave(p, filename="heatmap_nooutlier.pdf", width=8, height=12, units=c("cm"),colormodel="srgb")雖然損失了一部分信息,但整體模式還是出來了。只是在選擇異常值標(biāo)準(zhǔn)時需要根據(jù)實(shí)際確認(rèn)。
非線性顏色
正常來講,顏色的賦予在最小值到最大值之間是均勻分布的。非線性顏色則是對數(shù)據(jù)比較小但密集的地方賦予更多顏色,數(shù)據(jù)大但分布散的地方賦予更少顏色,這樣既能加大區(qū)分度,又最小的影響原始數(shù)值。通常可以根據(jù)數(shù)據(jù)模式,手動設(shè)置顏色區(qū)間。為了方便自動化處理,我一般選擇用四分位數(shù)的方式設(shè)置顏色區(qū)間。
data_ori <- "Grp_1;Grp_2;Grp_3;Grp_4;Grp_5 a;6.6;20.9;100.1;600.0;5.2 b;20.8;99.8;700.0;3.7;19.2 c;100.0;800.0;6.2;21.4;98.6 d;900;3.3;20.3;101.1;10000"data <- read.table(text=data_ori, header=T, row.names=1, sep=";", quote="")data ?Grp_1 Grp_2 Grp_3 Grp_4 ? Grp_5 a ? 6.6 ?20.9 100.1 600.0 ? ? 5.2 b ?20.8 ?99.8 700.0 ? 3.7 ? ?19.2 c 100.0 800.0 ? 6.2 ?21.4 ? ?98.6 d 900.0 ? 3.3 ?20.3 101.1 10000.0data$ID = rownames(data) data_m = melt(data, id.vars=c("ID")) # 獲取數(shù)據(jù)的最大、最小、第一四分位數(shù)、中位數(shù)、第三四分位數(shù) summary_v <- summary(data_m$value) summary_v ? ?Min. ?1st Qu. ? Median ? ? Mean ?3rd Qu. ? ? Max.3.30 ? ?16.05 ? ?60.00 ? 681.40 ? 225.80 10000.00# 在最小值和第一四分位數(shù)之間劃出6個區(qū)間,第一四分位數(shù)和中位數(shù)之間劃出6個區(qū)間,中位數(shù)和第三四分位數(shù)之間劃出5個區(qū)間,最后的數(shù)劃出5個區(qū)間 break_v <- unique(c(seq(summary_v[1]*0.95,summary_v[2],length=6),seq(summary_v[2],summary_v[3],length=6),seq(summary_v[3],summary_v[5],length=5),seq(summary_v[5],summary_v[6]*1.05,length=5))) break_v [1] ? ? 3.135 ? ? 5.718 ? ? 8.301 ? ?10.884 ? ?13.467 ? ?16.050 ? ?24.840[8] ? ?33.630 ? ?42.420 ? ?51.210 ? ?60.000 ? 101.450 ? 142.900 ? 184.350 [15] ? 225.800 ?2794.350 ?5362.900 ?7931.450 10500.000# 安照設(shè)定的區(qū)間分割數(shù)據(jù) # 原始數(shù)據(jù)替換為了其所在的區(qū)間的數(shù)值 data_m$value <- cut(data_m$value, breaks=break_v,labels=break_v[2:length(break_v)]) break_v=unique(data_m$value)data_m ? ID variable ? value 1 ? a ? ?Grp_1 ? 8.301 2 ? b ? ?Grp_1 ? 24.84 3 ? c ? ?Grp_1 ?101.45 4 ? d ? ?Grp_1 2794.35 5 ? a ? ?Grp_2 ? 24.84 6 ? b ? ?Grp_2 ?101.45 7 ? c ? ?Grp_2 2794.35 8 ? d ? ?Grp_2 ? 5.718 9 ? a ? ?Grp_3 ?101.45 10 ?b ? ?Grp_3 2794.35 11 ?c ? ?Grp_3 ? 8.301 12 ?d ? ?Grp_3 ? 24.84 13 ?a ? ?Grp_4 2794.35 14 ?b ? ?Grp_4 ? 5.718 15 ?c ? ?Grp_4 ? 24.84 16 ?d ? ?Grp_4 ?101.45 17 ?a ? ?Grp_5 ? 5.718 18 ?b ? ?Grp_5 ? 24.84 19 ?c ? ?Grp_5 ?101.45 20 ?d ? ?Grp_5 ? 10500# 雖然看上去還是數(shù)值,但已經(jīng)不是數(shù)字類型了 # 而是不同的因子了,這樣就可以對不同的因子賦予不同的顏色了 > is.numeric(data_m$value) [1] FALSE > is.factor(data_m$value) [1] TRUEbreak_v#[1] 8.301 ? 24.84 ? 101.45 ?2794.35 5.718 ? 10500
#18 Levels: 5.718 8.301 10.884 13.467 16.05 24.84 33.63 42.42 51.21 … 10500
調(diào)整行的順序或列
如果想保持圖中每一行的順序與輸入的數(shù)據(jù)框一致,需要設(shè)置因子的水平。這也是ggplot2中調(diào)整圖例或橫縱軸字符順序的常用方式。
data_rowname <- rownames(data) data_rowname <- as.vector(rownames(data)) data_rownames <- rev(data_rowname) data_log_m$ID <- factor(data_log_m$ID, levels=data_rownames, ordered=T) p <- ggplot(data_log_m, aes(x=variable,y=ID)) + xlab(NULL) + ylab(NULL) + theme_bw() + theme(panel.grid.major = element_blank()) + theme(legend.key=element_blank()) + theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1)) + theme(legend.position="top") + ?geom_tile(aes(fill=value)) + scale_fill_gradient(low = "white", high = "red") ggsave(p, filename="heatmap_log.pdf", width=8, height=12, units=c("cm"),colormodel="srgb")基于ggplot2的heatmap繪制到現(xiàn)在就差不多了,而關(guān)于數(shù)據(jù)可視化還有很多值得探索,還請留意后續(xù)分享?
R統(tǒng)計和作圖
Graphpad,經(jīng)典繪圖工具初學(xué)初探
維恩(Venn)圖繪制工具大全 (在線+R包)
在R中贊揚(yáng)下努力工作的你,獎勵一份CheatShet
別人的電子書,你的電子書,都在bookdown
R語言 - 線圖繪制
R語言 - 線圖一步法
R語言 - 箱線圖(小提琴圖、抖動圖、區(qū)域散點(diǎn)圖)
R語言 - 箱線圖一步法
R語言 - 火山圖
R語言 - 富集分析泡泡圖
R語言 - 散點(diǎn)圖繪制
R語言 - 韋恩圖
R語言 - 柱狀圖
R語言 - 圖形設(shè)置中英字體
R語言 - 非參數(shù)法生存分析
R語言 - 繪制seq logo圖
WGCNA分析,簡單全面的最新教程
psych +igraph:共表達(dá)網(wǎng)絡(luò)構(gòu)建
一文學(xué)會網(wǎng)絡(luò)分析——Co-occurrence網(wǎng)絡(luò)圖在R中的實(shí)現(xiàn)
一文看懂PCA主成分分析
富集分析DotPlot,可以服
基因共表達(dá)聚類分析和可視化
R中1010個熱圖繪制方法
還在用PCA降維?快學(xué)學(xué)大牛最愛的t-SNE算法吧, 附Python/R代碼
一個函數(shù)抓取代謝組學(xué)權(quán)威數(shù)據(jù)庫HMDB的所有表格數(shù)據(jù)
文章用圖的修改和排版
network3D:?交互式桑基圖
network3D 交互式網(wǎng)絡(luò)生成
Seq logo 在線繪制工具——Weblogo
生物AI插圖素材獲取和拼裝指導(dǎo)
ggplot2高效實(shí)用指南 (可視化腳本、工具、套路、配色)
圖像處理R包magick學(xué)習(xí)筆記
SOM基因表達(dá)聚類分析初探
利用gganimate可視化全球范圍R-Ladies(R社區(qū)性別多樣性組織)發(fā)展情況
一分鐘繪制磷脂雙分子層:AI零基礎(chǔ)入門和基本圖形繪制
AI科研繪圖(二):模式圖的基本畫法
你知道R中的賦值符號箭頭(<-)和等號(=)的區(qū)別嗎?
R語言可視化學(xué)習(xí)筆記之ggridges包
利用ComplexHeatmap繪制熱圖(一)
ggplot2學(xué)習(xí)筆記之圖形排列
R包reshape2,輕松實(shí)現(xiàn)長、寬數(shù)據(jù)表格轉(zhuǎn)換
用R在地圖上繪制網(wǎng)絡(luò)圖的三種方法
PCA主成分分析實(shí)戰(zhàn)和可視化 附R代碼和測試數(shù)據(jù)
iTOL快速繪制顏值最高的進(jìn)化樹!
12個ggplot2擴(kuò)展包幫你實(shí)現(xiàn)更強(qiáng)大的可視化
編程模板-R語言腳本寫作:最簡單的統(tǒng)計與繪圖,包安裝、命令行參數(shù)解析、文件讀取、表格和矢量圖輸出
R語言統(tǒng)計入門課程推薦——生物科學(xué)中的數(shù)據(jù)分析Data Analysis for the Life Sciences
數(shù)據(jù)可視化基本套路總結(jié)
你知道R中的賦值符號箭頭<-和等號=的區(qū)別嗎?
使用dplyr進(jìn)行數(shù)據(jù)操作30例
交集intersect、并集union、找不同setdiff
R包reshape2,輕松實(shí)現(xiàn)長、寬數(shù)據(jù)表格轉(zhuǎn)換
1數(shù)據(jù)類型(向量、數(shù)組、矩陣、 列表和數(shù)據(jù)框)
2讀寫數(shù)據(jù)所需的主要函數(shù)、與外部環(huán)境交互
3數(shù)據(jù)篩選——提取對象的子集
4向量、矩陣的數(shù)學(xué)運(yùn)算
5控制結(jié)構(gòu)
6函數(shù)及作用域
7認(rèn)識循環(huán)函數(shù)lapply和sapply
8分解數(shù)據(jù)框split和查看對象str
9模擬—隨機(jī)數(shù)、抽樣、線性模型
1初識ggplot2繪制幾何對象
2圖層的使用—基礎(chǔ)、加標(biāo)簽、注釋
3工具箱—誤差線、加權(quán)數(shù)、展示數(shù)據(jù)分布
4語法基礎(chǔ)
5通過圖層構(gòu)建圖像
6標(biāo)度、軸和圖例
7定位-分面和坐標(biāo)系
8主題設(shè)置、存儲導(dǎo)出
9繪圖需要的數(shù)據(jù)整理技術(shù)
創(chuàng)建屬于自己的調(diào)色板
28個實(shí)用繪圖包,總有幾個適合你
熱圖繪制
R做線性回歸
繪圖相關(guān)系數(shù)矩陣corrplot
相關(guān)矩陣可視化ggcorrplot
繪制交互式圖形recharts
交互式可視化CanvasXpress
聚類分析factoextra
LDA分析、作圖及添加置信-ggord
解決散點(diǎn)圖樣品標(biāo)簽重疊ggrepel
添加P值或顯著性標(biāo)記ggpubr
Alpha多樣性稀釋曲線rarefraction curve
堆疊柱狀圖各成分連線畫法:突出組間變化
沖擊圖展示組間時間序列變化ggalluvial
桑基圖riverplot
微生物環(huán)境因子分析ggvegan
五彩進(jìn)化樹與熱圖更配ggtree
多元回歸樹分析mvpart
隨機(jī)森林randomForest?分類Classification?回歸Regression
加權(quán)基因共表達(dá)網(wǎng)絡(luò)分析WGCNA
circlize包繪制circos-plot
R語言搭建炫酷的線上博客系統(tǒng)
28個實(shí)用繪圖包,總有幾個適合你
熱圖繪制
R做線性回歸
繪圖相關(guān)系數(shù)矩陣corrplot
相關(guān)矩陣可視化ggcorrplot
繪制交互式圖形recharts
交互式可視化CanvasXpress
聚類分析factoextra
LDA分析、作圖及添加置信-ggord
解決散點(diǎn)圖樣品標(biāo)簽重疊ggrepel
添加P值或顯著性標(biāo)記ggpubr
Alpha多樣性稀釋曲線rarefraction curve
堆疊柱狀圖各成分連線畫法:突出組間變化
沖擊圖展示組間時間序列變化ggalluvial
桑基圖riverplot
微生物環(huán)境因子分析ggvegan
五彩進(jìn)化樹與熱圖更配ggtree
多元回歸樹分析mvpart
隨機(jī)森林randomForest?分類Classification?回歸Regression
加權(quán)基因共表達(dá)網(wǎng)絡(luò)分析WGCNA
circlize包繪制circos-plot
R語言搭建炫酷的線上博客系統(tǒng)
維恩(Venn)圖繪制工具大全 (在線+R包)
R包c(diǎn)irclize:柱狀圖用膩了?試試好看的弦狀圖
獲取pheatmap聚類后和標(biāo)準(zhǔn)化后的結(jié)果
增強(qiáng)火山圖,要不要試一下?
一個震撼的交互型3D可視化R包 - 可直接轉(zhuǎn)ggplot2圖為3D
贈你一只金色的眼 - 富集分析和表達(dá)數(shù)據(jù)可視化
是Excel的圖,不!是R的圖
道友,來Rstudio里面看動畫了
用了這么多年的PCA可視化竟然是錯的!!!
R語言可視化學(xué)習(xí)筆記之ggridges包
往期精品(點(diǎn)擊圖片直達(dá)文字對應(yīng)教程)
后臺回復(fù)“生信寶典福利第一波”或點(diǎn)擊閱讀原文獲取教程合集
總結(jié)
以上是生活随笔為你收集整理的R语言学习 - 热图美化 (数值标准化和调整坐标轴顺序)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nature子刊:是穷是富与基因有关?大
- 下一篇: 明明不胖,为什么你一直都喊着要减肥?