久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

聽說你還不會畫熱圖

 阿非ycfg 2017-10-02

群眾紛紛表示圖二是Excel畫的,,我覺得也是,!Excel是生物學(xué)家的最愛啊。雖然做生信的人都看不上,,最主要是沒有記錄,,不具備可重復(fù)性。但現(xiàn)實就是大家都愛Excel,。

如果我們在R里打命令fortunes::fortune(59),,你將看到以下的輸出:

Let’s not kid ourselves: the most widely used piece of software for statistics
is Excel.
— Brian D. Ripley (‘Statistical Methods Need Software: A View of Statistical Computing’)
     Opening lecture RSS 2002, Plymouth (September 2002)

曾經(jīng)有人問我,,用R畫熱圖怎么改顏色,我的回答是無能為力(沒說怎么畫,,我怎么能夠知道怎么改),。孔乙己老先生告訴我們回字有四樣寫法,,而R畫熱圖,,豈止4種?;赽ase graphics有stats::heatmap, gplots::heatmap.2,,以及多個包實現(xiàn)的heatmap.3。交互式的熱圖有heatmaply,、d3heatmapiheatmapr等包,。

對于R代碼無感的話,還有shinyheatmap,,直接提供交互式的網(wǎng)頁操作界面,。

基于grid graphics比較有名的有pheatmapComplexHeatmap包,要論復(fù)雜性,,ComplexHeatmap最厲害,,要論簡單而且也還比較漂亮,那就pheatmap了,。而且基于grid,,也是保障了后續(xù)的操作,而且現(xiàn)在整個grid的生態(tài)最好,,各種輔助的包太強大,。

比如我這樣畫一個熱圖:

d = data.frame(matrix(rnorm(100), ncol=10))colnames(d) = paste0('t', 1:10)rownames(d) = paste0('g', 1:10)library(pheatmap)pheatmap(d) -> x

基本上我們發(fā)文章,圖都是有多個panel拼起來的,,這個pheatmap的輸出,,就可以用cowplot來拼,比如這里我用ggplot2畫個散點圖,,然后拼在一起,。

p  = ggplot(d, aes(t1, t2)) + geom_point(size=5)plot_grid(x$gtable, p, labels=c('A', 'B'))

就是這么簡單,當(dāng)然你還可以基于gtable進行操作,,修改各種細(xì)節(jié),。

這里我不得不吐槽一下,很多人認(rèn)為R有四套畫圖系統(tǒng): base,、grid,、ggplot2、lattice,。然后認(rèn)為ggplot2最牛逼,,天天ggplot2打遍天下無敵手一樣,,這就是沒見過世面啊?。▏?yán)格說lattice和ggplot2不能算圖形系統(tǒng))

試問ggplot2他爹是誰,?ggplot2和lattice都是基于grid。現(xiàn)在我們ggplot2出圖后各種高級玩法,、以及我們自己寫ggplot2圖層,,都是用grid!很多人認(rèn)為cowplot是拼ggplot2的,,plot_grid這個函數(shù)名已經(jīng)說明了一切,,它是拼grid的,一切基于grid的圖,,比如上面的pheatmapggplot2,,輕松拼在一起。

我能寫出ggimageggtree包,,能夠一次解決ggplot2所有字體,,都是因為懂一點grid。如果你對R語言的畫圖系統(tǒng)蒙圈的話,,建議你讀一下《樹變圖,,圖變樹?》這一篇文章,。

這里并沒有否定ggplot2的意思,,雖然grid更靈活,能做更多的事情,,但ggplot2是我們的最愛,,因為ggplot2所實現(xiàn)的語法,是人類友好的,,讓我們站在更高的角度,可以更加抽象地思考畫圖,。但很多人不會用ggplot2畫熱圖,,因為ggplot2對tidy data的要求與熱圖的matrix是相悖的,我們可視化出來和matrix是對應(yīng)的,,但ggplot2要求我們把matrix,,轉(zhuǎn)化成長型的data.frame。雖然有很多熱圖的實現(xiàn),,但很多人還是想用ggplot2來出圖,,因為語法簡單,用theme好操作細(xì)節(jié),。

這里簡單介紹一下我很多年前寫的一個簡單的函數(shù),。在DOSE包里,,我寫了一個simplot的函數(shù),這個函數(shù)是基于ggplot2的,,用于可視化DO語義相似性矩陣,,像上面的數(shù)據(jù),直接用simplot(d)就可以出圖:

默認(rèn)會打印出數(shù)字,,在矩陣比較小的時候,,還是比較好的,如果你不想打印出來,,可以用simplot(d, labs=F),。

我們可以很容易地?fù)Q配色方案,比如用類似于pheatmap的風(fēng)格:

library(RColorBrewer)colorRampPalette(rev(brewer.pal(n = 7,     name = 'RdYlBu'))) -> ccsimplot(d) + scale_fill_gradientn(colors=cc(100))

再比如圖例我們嫌太短了,,想拉長一點:

simplot(d) +   scale_fill_gradientn(colors=cc(100)) +   theme(legend.key.height=unit(5, 'line'))

有了這個simplot函數(shù),,一鍵出圖,然后再用ggplot2改細(xì)節(jié),,再也不要說不會用ggplot2畫熱圖了,。

Citation

G Yu, LG Wang, GR Yan, QY He. DOSE: an R/Bioconductor package for Disease Ontology Semantic and Enrichment analysis. Bioinformatics 2015, 31(4):608-609.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多