R語言學習之線圖的繪制詳解_第1頁
R語言學習之線圖的繪制詳解_第2頁
R語言學習之線圖的繪制詳解_第3頁
R語言學習之線圖的繪制詳解_第4頁
R語言學習之線圖的繪制詳解_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第R語言學習之線圖的繪制詳解目錄線圖單線圖多線圖橫軸文本線圖

線圖

線圖是反映趨勢變化的一種方式,其輸入數據一般也是一個矩陣。

單線圖

假設有這么一個矩陣,第一列為轉錄起始位點及其上下游5kb的區(qū)域,第二列為H3K27ac修飾在這些區(qū)域的豐度,想繪制一張線圖展示。

profile="Pos;H3K27ac

-5000;8.7

-4000;8.4

-3000;8.3

-2000;7.2

-1000;3.6

0;3.6

1000;7.1

2000;8.2

3000;8.4

4000;8.5

5000;8.5"

讀入數據(經過前面幾篇的聯(lián)系,這應該都很熟了)

profile_text-read.table(text=profile,header=T,s=1,quote="",sep=";")

profile_text

H3K27ac

-5000

8.7

-4000

8.4

-3000

8.3

-2000

7.2

-1000

3.6

0

3.6

1000

7.1

2000

8.2

3000

8.4

4000

8.5

5000

8.5

#在melt時保留位置信息

#melt格式是ggplot2畫圖最喜歡的格式

#好好體會下這個格式,雖然多占用了不少空間,但是確實很方便

#這里可以用`xvariable`,也可以是其它字符串,但需要保證后面與這里的一致

#因為這一列是要在X軸顯示,所以起名為`xvariable`。

profile_text$xvariable=rownames(profile_text)

library(ggplot2)

library(reshape2)

data_m-melt(profile_text,id.vars=c("xvariable"))

data_m

xvariablevariablevalue

1

-5000

H3K27ac

8.7

2

-4000

H3K27ac

8.4

3

-3000

H3K27ac

8.3

4

-2000

H3K27ac

7.2

5

-1000

H3K27ac

3.6

6

0

H3K27ac

3.6

7

1000

H3K27ac

7.1

8

2000

H3K27ac

8.2

9

3000

H3K27ac

8.4

10

4000

H3K27ac

8.5

11

5000

H3K27ac

8.5

然后開始畫圖,與上面畫heatmap一樣。

#variable和value為矩陣melt后的兩列的名字,內部變量,variable代表了點線的屬性,value代表對應的值。

p-ggplot(data_m,aes(x=xvariable,y=value),color=variable)+geom_line()

#圖會存儲在當前目錄的Rplots.pdf文件中,如果用Rstudio,可以不運行dev.off()

dev.off()

滿心期待一個倒鐘形曲線,結果,

什么也沒有。

仔細看,出來一段提示

geom_path:Eachgroupconsistsofonlyoneobservation.

Doyouneedtoadjustthegroupaesthetic

原來默認ggplot2把每個點都視作了一個分組,什么都沒畫出來。而data_m中的數據都來源于一個分組H3K27ac,分組的名字為variable,修改下腳本,看看效果。

p-ggplot(data_m,aes(x=xvariable,y=value,color=variable,group=variable))+

geom_line()+theme(legend.position=c(0.1,0.9))

dev.off()

圖出來了,一條線,看一眼沒問題;再仔細看,不對了,怎么還不是倒鐘形,原來橫坐標錯位了。

檢查下數據格式

summary(data_m)

xvariable

variable

Length:11

H3K27ac:11

Class:character

Mode

:character

問題來了,xvariable雖然看上去數字,但存儲的實際是字符串(因為是作為行名字讀取的),需要轉換為數字。

data_m$xvariable-as.numeric(data_m$xvariable)

#再檢驗下

is.numeric(data_m$xvariable)

[1]TRUE

好了,繼續(xù)畫圖。

#注意斷行時,加號在行尾,不能放在行首

p-ggplot(data_m,aes(x=xvariable,y=value,color=variable,group=variable))+

geom_line()+theme(legend.position=c(0.1,0.8))

dev.off()

圖終于出來了,調了下legend的位置,看上去有點意思了。

有點難看,如果平滑下,會不會好一些,stat_smooth可以對繪制的線進行局部擬合。在不影響變化趨勢的情況下,可以使用(但慎用)。

p-ggplot(data_m,aes(x=xvariable,y=value,color=variable,group=variable))+

geom_line()+stat_smooth(method="auto",se=FALSE)+

theme(legend.position=c(0.1,0.8))

dev.off()

從圖中看,趨勢還是一致的,線條更優(yōu)美了。另外一個方式是增加區(qū)間的數量,線也會好些,而且更真實。

stat_smooth和geom_line各繪制了一條線,只保留一條就好。

p-ggplot(data_m,aes(x=xvariable,y=value,color=variable,group=variable))+

stat_smooth(method="auto",se=FALSE)+theme(legend.position=c(0.1,0.8))

dev.off()

好了,終于完成了單條線圖的繪制。

多線圖

那么再來一個多線圖的例子吧,只要給之前的數據矩陣多加幾列就好了。

profile="Pos;h3k27ac;ctcf;enhancer;h3k4me3;polII

-5000;8.7;10.7;11.7;10;8.3

-4000;8.4;10.8;11.8;9.8;7.8

-3000;8.3;10.5;12.2;9.4;7

-2000;7.2;10.9;12.7;8.4;4.8

-1000;3.6;8.5;12.8;4.8;1.3

0;3.6;8.5;13.4;5.2;1.5

1000;7.1;10.9;12.4;8.1;4.9

2000;8.2;10.7;12.4;9.5;7.7

3000;8.4;10.4;12;9.8;7.9

4000;8.5;10.6;11.7;9.7;8.2

5000;8.5;10.6;11.7;10;8.2"

profile_text-read.table(text=profile,header=T,s=1,quote="",sep=";")

profile_text$xvariable=rownames(profile_text)

data_m-melt(profile_text,id.vars=c("xvariable"))

data_m$xvariable-as.numeric(data_m$xvariable)

#這里group=variable,而不是group=1(如果上面你用的是1的話)

#variable和value為矩陣melt后的兩列的名字,內部變量,variable代表了點線的屬性,value代表對應的值。

p-ggplot(data_m,aes(x=xvariable,y=value,color=variable,group=variable))+

stat_smooth(method="auto",se=FALSE)+theme(legend.position=c(0.85,0.2))

dev.off()

橫軸文本線圖

如果橫軸是文本,又該怎么調整順序呢?還記得之前熱圖旁的行或列的順序調整嗎?重新設置變量的factor水平就可以控制其順序。

profile="Pos;h3k27ac;ctcf;enhancer;h3k4me3;polII

-5000;8.7;10.7;11.7;10;8.3

-4000;8.4;10.8;11.8;9.8;7.8

-3000;8.3;10.5;12.2;9.4;7

-2000;7.2;10.9;12.7;8.4;4.8

-1000;3.6;8.5;12.8;4.8;1.3

0;3.6;8.5;13.4;5.2;1.5

1000;7.1;10.9;12.4;8.1;4.9

2000;8.2;10.7;12.4;9.5;7.7

3000;8.4;10.4;12;9.8;7.9

4000;8.5;10.6;11.7;9.7;8.2

5000;8.5;10.6;11.7;10;8.2"

profile_text-read.table(text=profile,header=T,s=1,quote="",sep=";")

profile_text_rownames-s(profile_text)

profile_text$xvariable=rownames(profile_text)

data_m-melt(profile_text,id.vars=c("xvariable"))

#就是這一句,會經常用到

data_m$xvariable-factor(data_m$xvariable,levels=profile_text_rownames,ordered=T)

#geom_line設置線的粗細和透明度

p-ggplot(data_m,aes(x=xvariable,y=value,color=variable,group=variable))+

geom_line(size=1,alpha=0.9)+theme(legend.position=c(0.85,0.2))+

theme(axis.text.x=element_text(angle=45,hjust=1,vjust=1))

#stat_smooth

#p-ggplot(data_m,aes(x=xvariable,y=value,color=variable,group=variable))+

#

stat_smooth(method="auto",se=FALSE)+theme(legend.position=c(0.85,0.2))+

#

theme(axis.te

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論