當前位置:
首頁 > 最新 > R語言繪圖——常用參數

R語言繪圖——常用參數

【作者】華玉為,就讀於蘇州大學生物信息專業,同時輔修計算機雙學位 ,對生物和編程具有濃厚興趣。

【責編】陳玫君

1

寫在開頭

本次推送的主要內容是R語言中常用參數的介紹和使用方法,也是較為基礎的,更適合剛剛開始學習R語言的小萌新們,所以還請大神們移步我們其他作者的推文~

2

正 文

小萌新R語言課堂開課啦~這堂課我們主要使用plot()函數來講繪圖的常用參數。恰巧小編最近手頭做了一個東東很適合來作為原始數據,所以就直接拿來講好了,先介紹一下原始數據:

該數據最開始是一套從NCBI下載的基因晶元數據,數據編號為GSE29272

發表該套數據的文章名字為:

Affymetrix gene expression array data forcardia and non-cardia gastric cancer samples

該初始數據的下載網址為:

https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE29272

這套數據的基本信息都可以在上面的網址中查看到,小編在下載之後又對這一套數據進行了一定的預處理,然後又對處理過的數據進行了差異表達基因的篩選。從中篩選到的具有明顯表達水平差異性的數據作為本次繪圖的原始數據。這些數據來自於共168個樣本的13個基因探針,在文章的最後會提供給需要的你。

再介紹一下背景:

在做完差異表達基因的篩選之後,小編對樣本進行了譜系聚類,但是聚類結果出了一點小問題,本來應該聚類成為兩個大類(Normal、Tumor)的樣本,在最右邊又單獨出現了一個小類。雖然這個小類只有六個樣本的大小,而且也是和Tumor分在一支上,但是!但是!身為一個完美主義者,這個根本不能忍啊!我就開始了使用R語言的探索過程……

喂喂喂!不要吐槽那一坨坨的是什麼東西,那只是樣本名重疊在一起了而已,雖然我室友都吐槽說像黑叔叔們的捲髮 ……

代碼的讀取和簡單處理

千里之行,始於足下

首先讀取原始數據,然後進行簡單的數據提取,代碼如下:

data

test

簡單解釋一下,read.csv()是R語言中讀取CSV格式文件的一種方法,後面參數header指的是讀入的數據是否帶有表頭。

我提供數據中只有第2列到第169列是我們需要的,第一列和最後兩列並不是我們需要的數據,所以我將其去除。

小貼士:可使用nrow()和ncol()函數,來查看數據的總行數和總列數。當然如果你使用了Rstudio的話在右側的數據欄中你可以輕易的查看行列數。

對數據進行主成分分析

及K-均值聚類

吾生也有涯,而知也無涯

這一步驟不在我們繪圖介紹的內容之中,主成分分析只是對數據的一種處理,所以不在此處過多贅述,你只需要知道我們在這一步中獲得了一個新的數據pca_data。而k-均值聚類,也是一種聚類的方法,是對先前的數據pca_data進行聚類分析使用的,它可以生成一個與pca_data中樣本一一對應的分類結果。詳情諮詢百度。代碼如下:

pca

summary(pca)

pca_data

library(stats)

fit_km1 =kmeans(pca_data,center=2)

繪圖正式開始

善於等待的人,一切都會及時來到

先拿出我們最先講到的函數plot(),對pca_data進行繪圖,代碼如下:

plot(pca_data)

運行結果如下:

這顯然不是我們想要的直觀分類結果。我們在之前的函數中繼續添加參數col,這個參數就是控制顏色的參數(color),對於這個函數的賦值,你可以直接賦值為數字 (1、2、3、4、5、6…),也可以使用 「red」、「green」、「blue」 等來賦值,但是注意這樣做的時候,對應的顏色要用雙引號括起來。你也可以使用一組對應的顏色向量來對其賦值,舉例:col=1、col=「red」、col=1:3、col=c(「red」.「green」,「blue」);修改代碼如下:

plot(pca_data,col=(fit_km1$cluster)*2)

運行結果如下:

簡單解釋一下,這裡賦值的fit_km1$cluster是我們聚類的結果,他的本質是一組數字向量,至於乘2,是因為默認1為黑色,黑色並不是很適合圖像的展示,所以用簡單的乘2來改變它的顏色。

根據賦予了色彩的圖像基本上就可直接看的出來他被明顯的分為了紅色和藍色兩大類。但是對於展示來說,我們不僅要看到聚類的結果,也要看到什麼樣的樣本被聚在了一起,我們在嘗試引入一個參數pch,這個參數是用來修改圖中圖形元素(plotting character)的,接受的賦值為數字或者數字向量,舉例pch=1、pch=c(1,2)。因為我的樣本本身就是Normal和Tumor交替出現的,所以修改代碼:

plot(pca_data,col=(fit_km1$cluster)*2,pch=c(1,2))

可以看出圓圈基本上被分到了紅色聚集的地方,而三角則都聚集在另一邊。此時肯定會有人說不喜歡圓圈和三角,那好吧,我只能一抬手——甩給你25個其他選擇,總有一款適合你:

此外,我們再次進行修改,在推出兩個參數lwd和cex分別是線條寬度和圖像元素的大小,只接受數字賦值,例如:lwd=2,cex=2;這些都是指默認參數的兩倍。再次修改代碼:

plot(pca_data,col=(fit_km1$cluster)*2,lwd=2,cex=1.5,pch=c(1,2))

運行結果如下:

看得出來,效果很明顯。哦,對了,我最開始的目的是要看看那六個奇怪的樣本在哪,那就再使用一個函數points(),這個函數是用來在已經繪製出來的圖像上添加新的元素點的。使用方法和plot()幾乎相同,我們嘗試找出這幾個樣本,代碼如下:

plot(pca_data,col=(fit_km1$cluster)*2,lwd=2,cex=1.5,pch=c(1,2))

points(pca_data[sp,],col="blue",lwd=2,pch=17)

結果如下:

嗯,果然這六個樣本點離藍色區域較遠,同時又有靠近紅色的趨勢,所以這又代表了啥?

管他呢,今天就寫到這了。

3

寫在結尾

斷更了半個多月了,先說一聲抱歉。

其實我最開始寫這個R語言教程,完全是因為我一個好朋友的委託,不是為了任何目的,只是單單的善意,我只是抱著助人為樂的心態去做的,其實我知道我寫的勉強可以叫做教程的東西究竟可以有多爛,而又有很多大神寫的文章在網上俯仰皆是,我也一直想著反正我寫的東西不會有人關注,而且學業也較繁重,打算慢慢鴿了的。但是能夠看到自己用心寫的東西真正的發布在了公眾號、知乎、官網上的時候,我的內心也是一種安慰。直到前幾天,我偶然在知乎上看到,還有一個人等著我更新,出於好奇,我又到公眾號下面看了一眼,閱讀量雖說不高,但是竟然也有一個人等待更新,就在某一個瞬間,我決定繼續完成這個系列,畢竟還有這麼兩個人願意看我——還是學生的一個小編寫的東西。

笑罵由人,我可能不認識你,更也沒見過你,但是,願你能堅定的走完你認準的那條路,沒有猶豫,也不曾彷徨。共勉。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |