




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第R語言學(xué)習(xí)之線圖的繪制詳解目錄線圖單線圖多線圖橫軸文本線圖
線圖
線圖是反映趨勢變化的一種方式,其輸入數(shù)據(jù)一般也是一個矩陣。
單線圖
假設(shè)有這么一個矩陣,第一列為轉(zhuǎn)錄起始位點及其上下游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"
讀入數(shù)據(jù)(經(jīng)過前面幾篇的聯(lián)系,這應(yīng)該都很熟了)
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后的兩列的名字,內(nèi)部變量,variable代表了點線的屬性,value代表對應(yīng)的值。
p-ggplot(data_m,aes(x=xvariable,y=value),color=variable)+geom_line()
#圖會存儲在當(dāng)前目錄的Rplots.pdf文件中,如果用Rstudio,可以不運行dev.off()
dev.off()
滿心期待一個倒鐘形曲線,結(jié)果,
什么也沒有。
仔細(xì)看,出來一段提示
geom_path:Eachgroupconsistsofonlyoneobservation.
Doyouneedtoadjustthegroupaesthetic
原來默認(rèn)ggplot2把每個點都視作了一個分組,什么都沒畫出來。而data_m中的數(shù)據(jù)都來源于一個分組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()
圖出來了,一條線,看一眼沒問題;再仔細(xì)看,不對了,怎么還不是倒鐘形,原來橫坐標(biāo)錯位了。
檢查下數(shù)據(jù)格式
summary(data_m)
xvariable
variable
Length:11
H3K27ac:11
Class:character
Mode
:character
問題來了,xvariable雖然看上去數(shù)字,但存儲的實際是字符串(因為是作為行名字讀取的),需要轉(zhuǎn)換為數(shù)字。
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()
圖終于出來了,調(diào)了下legend的位置,看上去有點意思了。
有點難看,如果平滑下,會不會好一些,stat_smooth可以對繪制的線進(jìn)行局部擬合。在不影響變化趨勢的情況下,可以使用(但慎用)。
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ū)間的數(shù)量,線也會好些,而且更真實。
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()
好了,終于完成了單條線圖的繪制。
多線圖
那么再來一個多線圖的例子吧,只要給之前的數(shù)據(jù)矩陣多加幾列就好了。
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后的兩列的名字,內(nèi)部變量,variable代表了點線的屬性,value代表對應(yīng)的值。
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()
橫軸文本線圖
如果橫軸是文本,又該怎么調(diào)整順序呢?還記得之前熱圖旁的行或列的順序調(diào)整嗎?重新設(shè)置變量的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"))
#就是這一句,會經(jīng)常用到
data_m$xvariable-factor(data_m$xvariable,levels=profile_text_rownames,ordered=T)
#geom_line設(shè)置線的粗細(xì)和透明度
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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年人行道養(yǎng)護(hù)車項目建議書
- 中職旅游教學(xué)課件
- 全球化背景下的教育趨勢比較分析
- 學(xué)生管理中的情感智能培養(yǎng)策略
- 游戲化學(xué)習(xí)在在線教育中的應(yīng)用與挑戰(zhàn)
- 中職教育語文課件《邊城》
- 教學(xué)策略優(yōu)化與學(xué)生心理健康的關(guān)聯(lián)性研究
- 基礎(chǔ)護(hù)士腫瘤科考試題庫及答案
- 2025年銅陵市重點中學(xué)高二物理第二學(xué)期期末聯(lián)考模擬試題含解析
- 商業(yè)領(lǐng)域的科技資源利用策略
- GB/T 10045-2018非合金鋼及細(xì)晶粒鋼藥芯焊絲
- GB 7099-2015食品安全國家標(biāo)準(zhǔn)糕點、面包
- 2023年納雍縣財政局系統(tǒng)事業(yè)單位招聘筆試題庫及答案解析
- 2023年廣東省普通高中學(xué)業(yè)水平考試及參考答案
- 建筑工程模板施工工藝技術(shù)要點講義豐富課件
- 永能選煤廠生產(chǎn)安全事故應(yīng)急救援預(yù)案
- 浙江省建設(shè)領(lǐng)域簡易勞動合同(A4版本)
- 位置度公差以及其計算
- 氯化銨危險化學(xué)品安全周知卡
- 浙江省本級公務(wù)車輛租賃服務(wù)驗收單(格式)
- 糖代謝紊亂的實驗診斷
評論
0/150
提交評論