R 學習 - 散點圖

R 學習 - 散點圖

生信寶典公眾號:http://mp.weixin.qq.com/s/c2nwATMwyU_9FgLprqmQ5A

散點圖

散點圖在生物信息分析中是應(yīng)用比較廣的一個圖衡怀,常見的差異基因火山圖扎瓶、功能富集分析泡泡圖、相關(guān)性分析散點圖码俩、抖動圖盖灸、PCA樣品分類圖等均驶。凡是想展示分布狀態(tài)的都可以用散點圖郑口。

橫縱軸都為數(shù)字的散點圖解析

繪制散點圖的輸入一般都是規(guī)規(guī)矩矩的矩陣,可以讓不同的列分別代表X軸各淀、Y軸懒鉴、點的大小、顏色揪阿、形狀疗我、名稱等。

輸入數(shù)據(jù)格式 (使用火山圖的輸入數(shù)據(jù)為例)

火山圖需要的數(shù)據(jù)格式如下

id: 不是必須的南捂,但一般的軟件輸出結(jié)果中都會包含吴裤,表示基因名字。

log2FoldChange: 差異倍數(shù)的對數(shù)溺健,一般的差異分析輸出結(jié)果中也會給出對數(shù)處理的值, 因此程序沒有提供這一步的計算操作麦牺。

padj: 多重假設(shè)檢驗矯正過的差異顯著性P值;一般的差異分析輸出結(jié)果為原始值鞭缭,程序提供一個參數(shù)對其求取負對數(shù)剖膳。

significant: 可選列,標記哪些基因是上調(diào)岭辣、下調(diào)吱晒、無差異;若無此列或未在參數(shù)中指定此列沦童,默認程序會根據(jù)padj列和log2FoldChange列根據(jù)給定的閾值自動計算差異基因仑濒,并作出不同顏色的標記叹话。

label: 可選列,一般用于在圖中標記出感興趣的基因的名字墩瞳。非-行的字符串都會標記在圖上驼壶。

volcano="id;log2FoldChange;padj;significant;label

E00007;4.28238;0;EHBIO_UP;A

E00008;-1.1036;0.476466843393901;Unchanged;-

E00009;-0.274368;1;Unchanged;-

E00010;4.62347;7.37606076333335e-103;EHBIO_UP;-

E00012;0.973987;0.482982440163204;Unchanged;-

E00017;-1.30205;0.000555693857439792;Baodian_UP;B

E00024;0.617636;2.78047837287061e-13;Unchanged;-

E00033;1.48669;2.56000581595275e-60;EHBIO_UP;-

E00034;-0.783716;0.00341521725291801;Unchanged;-

E00036;2.01592;6.03136656016401e-06;EHBIO_UP;C

E00040;-1.89657;4.73663890849056e-21;Baodian_UP;-

E00041;-0.268168;0.563429434558031;Unchanged;-

E00042;0.0861048;0.367700939634328;Unchanged;-

E00043;-1.19328;1.42673872027352e-153;Baodian_UP;-

E00044;-0.887981;2.43067804654905e-26;Unchanged;-

E00047;-0.610941;5.51696648645932e-57;Unchanged;-"# 數(shù)據(jù)的讀取之前的R語言統(tǒng)計和繪圖系列都已解釋過,不再贅述

# 文末也有鏈接可直達之前的文章喉酌,新學者建議從頭開始volcanoData<-read.table(text=volcano,sep=";",header=T,quote="",check.names=F)head(volcanoData)

id log2FoldChange? ? ? ? ? padj significant label

1 E00007? ? ? 4.282380? 0.000000e+00? ? EHBIO_UP? ? A

2 E00008? ? ? -1.103600? 4.764668e-01? Unchanged? ? -

3 E00009? ? ? -0.274368? 1.000000e+00? Unchanged? ? -

4 E00010? ? ? 4.623470 7.376061e-103? ? EHBIO_UP? ? -

5 E00012? ? ? 0.973987? 4.829824e-01? Unchanged? ? -

6 E00017? ? ? -1.302050? 5.556939e-04? Baodian_UP? ? B

繪制散點圖热凹,只需要指定X軸和Y軸,再加上geom_point即可泪电。

library(ggplot2)p<-ggplot(volcanoData,aes(x=log2FoldChange,y=padj))p<-p+geom_point()# 前面是給p不斷添加圖層的過程

# 單輸入一個p是真正作圖

# 前面有人說般妙,上面都輸完了,怎么沒出圖

# 就因為差了一個pp

說好的火山圖的例子歪架,但怎么也看不出噴發(fā)的態(tài)勢股冗。

對數(shù)據(jù)坐下預處理,差異大的基因padj小和蚪,先對其求取負對數(shù),所謂負負得正烹棉,差異大的基因就會處于圖的上方了攒霹。

# 從示例數(shù)據(jù)中看到,最小的padj值為0浆洗,求取負對數(shù)為正無窮催束。

# 實際上padj值小到一個點對我們來講就是個數(shù)

# 所以可以給所有小于1e-6的padj都讓其等于1e-6,再小也沒意義

#volcanoData[volcanoData$padj<1e-6,"padj"]<-1e-6volcanoData$padj<-(-1)*log10(volcanoData$padj)

數(shù)據(jù)中基因的上調(diào)倍數(shù)遠高于下調(diào)倍數(shù)伏社,使得出來的圖是偏的抠刺,這次畫圖時調(diào)整下X軸的區(qū)間使圖對稱。

p<-ggplot(volcanoData,aes(x=log2FoldChange,y=padj))+geom_point()+xlim(-4.7,4.7)p

有點意思了摘昌,數(shù)據(jù)太少不明顯速妖,下一步加上顏色看看。

p<-ggplot(volcanoData,aes(x=log2FoldChange,y=padj))+geom_point(color=significant)+xlim(-4.7,4.7)p

利用現(xiàn)有的數(shù)據(jù)聪黎,基本上就是這個樣子了罕容。雖然還不太像,原理都已經(jīng)都點到了稿饰。

盜取火山圖繪制一文中的圖來顯示個真正的火山圖吧锦秒。這樣一步步繪制很麻煩,去看一步法吧喉镰。

橫縱軸都為字符串的散點圖展示

輸入數(shù)據(jù)格式如下

這個數(shù)據(jù)是前面講到的FASTQC結(jié)果總結(jié)中的直觀的查看所有樣品測序堿基質(zhì)量和GC含量的散點圖的示例數(shù)據(jù)旅择。

fastqc<-"ID;GC_quality;Base_quality

ehbio_1_1;PASS;PASS

ehbio_1_2;PASS;PASS

ehbio_2_1;WARN;PASS

ehbio_2_2;WARN;PASS

Other_1_1;FAIL;FAIL

Other_1_2;FAIL;FAIL"fastqc_data<-read.table(text=fastqc,sep=";",header=T)# 就不查看了

p<-ggplot(fastqc_data,aes(x=GC_quality,y=Base_quality))+geom_point()p

六個點少了只剩下了3個,重疊在一起了侣姆,而且也不知道哪個點代表什么樣品生真。這時需要把點抖動下脖咐,用到一個包ggbeeswarm,抖動圖的神器汇歹。

library(ggbeeswarm)p<-ggplot(fastqc_data,aes(x=GC_quality,y=Base_quality))+geom_quasirandom()# 使用geom_text增加點的標記

# label表示標記哪一列的數(shù)值

# position_quasirandom獲取點偏移后的位置

# xjust調(diào)整對齊方式; hjust是水平的對齊方式屁擅,0為左,1為右产弹,0.5居中派歌,0-1之間可以取任意值。vjust是垂直對齊方式痰哨,0底對齊胶果,1為頂對齊,0.5居中斤斧,0-1之間可以取任意值早抠。

# check_overlap檢查名字在圖上是否重疊p<-p+geom_text(aes(label=ID),position=position_quasirandom(),hjust=0,check_overlap=T)p

一網(wǎng)打進散點圖繪制

假如有一個輸入數(shù)據(jù)如下所示(存儲于文件scatterplot.xls中)

Samp Gene1 Gene2 Color Size GC_quality Base_quality

a 1 1 grp1 10 PASS PASS

b 2 2 grp1 10 PASS PASS

c 1 3 grp1 10 WARN PASS

d 3 1 grp2 15 WARN WARN

e 2 2 grp2 15 PASS WARN

f 3 3 grp3 5 PASS PASS

g 2 1 grp3 5 WARN PASS

想繪制樣品在這兩個Gene為軸的空間的分布,并標記樣品的屬性撬讽,只需要運行如下命令

# -f: 指定輸入文件蕊连,列數(shù)不限,順序不限; 第一行為列名字游昼,第一列無特殊要求甘苍,必選# -X: 指定哪一列為X軸信息,必選# -Y: 指定哪一列為Y軸信息烘豌,必選# -c: 指定用哪一列標記顏色载庭,可選# -s: 指定哪一列標記大小,一般為數(shù)字列廊佩,可選# -S: 指定哪一列標記形狀囚聚,可選# -L: 指定哪一列用來作為文本標記# -w, -u: 指定圖的長寬sp_scatterplot2.sh -f scatterplot.xls -X Gene1 -Y Gene2 -c Color -s Size -S GC_quality -L Samp -w 10 -u 10

如果橫縱軸為字符串,且有重復, 則需指定參數(shù)-J TRUE以錯開重疊的點标锄,具體如下

# -O: 指定X軸變量的順序, 默認是字母順序# 其它列或其它屬性的順序也可以用相應(yīng)的方式指示顽铸,具體看程序的幫助提示# -c Gene1: 用特定基因的表達對點著色,單細胞分析圖中常用# -J TRUE: 見上# -Z FALSE:默認使用geom_text_repel添加點的標記鸯绿,及其智能跋破,不會出現(xiàn)標簽過多覆蓋的情況# 但對jitterplot,會有些沖突瓶蝴,所以在`-J TRUE`且出來的圖中點的標簽不符合預期時毒返,設(shè)定# 次參數(shù)為FALSE,使用geom_text標記點舷手。sp_scatterplot2.sh -f scatterplot.xls -X GC_quality -Y Base_quality -O"'WARN', 'PASS'"-c Gene1 -w 10 -u 10 -J TRUE -L Samp -Z FALSE

只有想不到拧簸,沒有做不到,sp_scatterplot2.sh還可以完成更多你想做的散點圖男窟,而且只需調(diào)參數(shù)盆赤,無需改代碼贾富,簡單可重用。

轉(zhuǎn)發(fā)獲取牺六,不用再重復了

Reference

http://blog.genesino.com/2017/07/scatterPlot

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颤枪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子淑际,更是在濱河造成了極大的恐慌畏纲,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件春缕,死亡現(xiàn)場離奇詭異盗胀,居然都是意外死亡,警方通過查閱死者的電腦和手機锄贼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門票灰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宅荤,你說我怎么就攤上這事屑迂。” “怎么了膘侮?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵屈糊,是天一觀的道長。 經(jīng)常有香客問我琼了,道長,這世上最難降的妖魔是什么夫晌? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任雕薪,我火速辦了婚禮,結(jié)果婚禮上晓淀,老公的妹妹穿的比我還像新娘所袁。我一直安慰自己,他們只是感情好凶掰,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布燥爷。 她就那樣靜靜地躺著,像睡著了一般懦窘。 火紅的嫁衣襯著肌膚如雪前翎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天畅涂,我揣著相機與錄音港华,去河邊找鬼。 笑死午衰,一個胖子當著我的面吹牛立宜,可吹牛的內(nèi)容都是我干的冒萄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼橙数,長吁一口氣:“原來是場噩夢啊……” “哼尊流!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灯帮,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤崖技,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后施流,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體响疚,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年瞪醋,在試婚紗的時候發(fā)現(xiàn)自己被綠了忿晕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡银受,死狀恐怖践盼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宾巍,我是刑警寧澤咕幻,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站顶霞,受9級特大地震影響肄程,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜选浑,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一蓝厌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧古徒,春花似錦拓提、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疹吃,卻和暖如春蹦疑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背互墓。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工必尼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓判莉,卻偏偏與公主長得像豆挽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子券盅,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 歡迎關(guān)注生信寶典帮哈,獲取更好閱讀體驗。 http://mp.weixin.qq.com/s?__biz=MzI5MT...
    生信寶典閱讀 4,322評論 5 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理锰镀,服務(wù)發(fā)現(xiàn)娘侍,斷路器,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 最近在寫個性化推薦的論文泳炉,經(jīng)常用到Python來處理數(shù)據(jù)憾筏,被pandas和numpy中的數(shù)據(jù)選取和索引問題繞的比較...
    shuhanrainbow閱讀 4,553評論 6 19
  • 在省內(nèi)大學,媽媽總是覺著我什么都缺花鹅,什么都想著打包寄來氧腰,大一大二大三,一次兩次三次八次刨肃,包括各種時令水果古拴。時令的意...
    我是小lv你呢閱讀 261評論 2 1
  • 這部由保羅.索倫蒂納指導的關(guān)于羅馬上流社會人與人黄痪,人與城的影片,我是外行人盔然,不懂專業(yè)的東西噢桅打,我所能感知的大概都是...
    偷月光的賊閱讀 396評論 2 0