本文展示如何使用ggplot2包繪制測(cè)序reads深度分布圖咽斧,即用條形圖來(lái)展示每個(gè)位點(diǎn)的測(cè)序深度椒袍,以及用餅圖來(lái)展示檢出病原的分布抢埋。
-
作圖數(shù)據(jù)說(shuō)明
-
傳遞文件1“VM00986.hist.data”烧董,為測(cè)序reads深度,第一列堿基位置剂习,第二列序列數(shù)蛮位,內(nèi)容如下:
-
傳遞文件2“VM00986.txt”,指定坐標(biāo)軸及圖標(biāo)題鳞绕,內(nèi)容如下:
-
傳遞文件3“VM00986.pie.data”失仁,第一列為檢出病原名稱,第二列為序列數(shù)们何,第三列為百分比萄焦,內(nèi)容如下:
-
繪圖腳本說(shuō)明
### 使用ggplot2繪制測(cè)序深度的條形圖、餅圖
library(ggplot2)
library(gridExtra) ## gridExtra包常用于控制圖形的復(fù)雜布局和繪制文本表冤竹,如把幾張圖拼成一組圖
## 傳遞參數(shù)
args <- commandArgs(TRUE)
## 讀取數(shù)據(jù):args[1]為文件"VM00986.hist“,用于畫條形圖
data1 <- read.table(args[1],sep="\t")
x1 <- data1[,1] ## data1第一列:堿基位置
y1 <- data1[,2] ## data2第二列:序列數(shù)拂封,若數(shù)值差異較大可執(zhí)行下一步的"截?cái)嘧鴺?biāo)軸",若不需要直接跳過(guò)下一步鹦蠕。
## 截?cái)嘧鴺?biāo)軸:將序列數(shù)大于600的值全部替換成600
n<-nrow(data1) ## 計(jì)算行數(shù)
y1<-c(1:n)
for(i in 1:n){
if (data1[i,2]>600)
data1[i,2]<-600
y1[i]<-data1[i,2]
}
## 截?cái)嘧鴺?biāo)軸
## 讀取數(shù)據(jù):args[2]為文件"VM00986.txt“,用于畫條形圖
data2 <- read.table(args[2],header=FALSE,sep="\t")
a <- data2[1,] ## 第一行:x軸標(biāo)題
b <- data2[2,] ## 第二行:圖標(biāo)題
c <- data2[3,] ## 第三行:y軸標(biāo)題
## ggplot繪制條形圖
p1 <- ggplot(data1,aes(x=x1)) +
geom_bar(aes(y=y1),stat="identity") +
labs(x=a,title=b)+ylab(c) + ## x軸標(biāo)題冒签、圖標(biāo)題、y軸標(biāo)題
theme(plot.title = element_text(hjust=0.5), ## 圖標(biāo)題居中
title=element_text(size=9), ## 圖標(biāo)題字體大小
axis.title.x=element_text(size=10), ## x軸標(biāo)題字體大小
axis.title.y=element_text(size=10)) + ## y軸標(biāo)題字體大小
scale_x_continuous(breaks = c(0,50,100,150,200,250,300,350,400,450)) ## x軸刻度標(biāo)簽
## 讀取數(shù)據(jù):args[3]為文件"VM00986.pie“,用于畫餅圖
data3 <- read.table(args[3],header=TRUE,sep="\t")
## 設(shè)置圖例標(biāo)題d:“microbe(n= reads)"
d <- paste("microbe (n=",sum(data3[,2])," reads)",sep="")
## 設(shè)置系列x標(biāo)題:比如“Others (n=419, 0.89%)”,round()求百分比钟病,保留2位小數(shù)
x2 <- paste(data3[,1]," (n=",data3[,2],", ",round(data3[,3]*100,2),"%",")",sep="")
y2 <- data3[,2] ## 第二列:y值
## 設(shè)置主題樣式:theme_minimal()簡(jiǎn)約主題萧恕,去除xy軸字體和標(biāo)題刚梭,去除邊框線和網(wǎng)格線
blank_theme <- theme_minimal()+theme(axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
panel.border = element_blank(),
panel.grid=element_blank())
## ggplot繪制餅圖
p2 <- ggplot(data3,aes(x=factor(1),fill=factor(x2,order=TRUE,levels=x2))) +
geom_bar(stat="identity",aes(y=y2), colour="black", size = 0.1) + ## stat="identity":條形的高度表示數(shù)據(jù)的值,而數(shù)據(jù)的值是由aes()函數(shù)的y參數(shù)決定的票唆;colour=邊框線的顏色朴读;size=粗細(xì)
coord_polar(theta="y",start=1.5) + ## 準(zhǔn)換成餅圖,start=起始位置
labs(fill=d) + ## 圖例標(biāo)題d
blank_theme +
scale_fill_manual(values=c("grey80","grey70","grey60","grey50","grey40")) #填充顏色:根據(jù)系列x的數(shù)量惰说,更改顏色參數(shù)的個(gè)數(shù)
## 將兩張圖拼成一張:排列為ncol列磨德、nrow行
p3 <- grid.arrange(p1,p2,ncol=1)
-
運(yùn)行腳本:操作環(huán)境cmd (傳遞參數(shù))
> D: ## 切換路徑
> cd D:\工作資料\科研項(xiàng)目\贛州人民醫(yī)院\ICU-鐘振洲\結(jié)果圖\測(cè)序深度圖
> Rscript.exe depth.R VM00986.hist.data VM00986.txt VM00986.pie.data ## 輸出文件“Rplot.pdf”缘回,結(jié)果如下:
結(jié)果發(fā)現(xiàn)餅圖中后四種病原的比例過(guò)小吆视,可重新畫一個(gè)放大版的餅圖:
-
使用ggplot2繪制餅圖
-
作圖數(shù)據(jù)說(shuō)明
-
元數(shù)據(jù)文件“pie.data”,第一列為檢出病原名稱酥宴,第二列為序列數(shù)啦吧,第三列為百分比,內(nèi)容如下:
-
繪圖腳本說(shuō)明
### 使用ggplot2繪制餅圖
library(ggplot2)
## 讀取數(shù)據(jù):餅圖
data <- read.table("pie.data",header=TRUE,sep="\t")
## 設(shè)置圖例的標(biāo)題:比如“microbe(n= reads)",sep=""分隔符為空白
title <- paste("microbe (n=",sum(data[,2])," reads)",sep="")
## 設(shè)置系列名稱x:比如“Others (n=419, 0.89%)”,round()保留2位小數(shù)
x <- paste(data[,1]," (n=",data[,2],", ",round(data[,3]*100,2),"%",")",sep="")
## y值為第2列
y <- data[,2]
## 設(shè)置主題樣式:theme_minimal()簡(jiǎn)約主題拙寡,去除xy軸字體和標(biāo)題授滓,去除邊框線和網(wǎng)格線
blank_theme <- theme_minimal()+theme(axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
panel.border = element_blank(),
panel.grid=element_blank())
## ggplot繪制餅圖
p2 <- ggplot(data,aes(x=factor(1),fill=factor(x,order=TRUE,levels=x)))+
geom_bar(stat="identity",aes(y=y),size = 0.1, colour="black")+ #條形圖轉(zhuǎn)換成餅圖,colour邊框顏色
coord_polar(theta="y",start=1.5)+ #彎曲橫縱坐標(biāo),start起始位置90度
labs(fill=title)+ #圖例標(biāo)題
blank_theme+
scale_fill_manual(values=c("grey70","grey60","grey50","grey40")) #根據(jù)檢出病原的數(shù)量肆糕,更改顏色參數(shù)的個(gè)數(shù)
p2 ## 將結(jié)果保存為pdf格式般堆,如下圖所示:
-
圖片拼接:AI軟件
使用AI軟件打開(kāi)上述兩個(gè)結(jié)果圖的PDF文件,調(diào)整為如下格式即可: