固話:010-53395839
郵箱:service@qinglianbio.com
網址:www.seosmolinks.com
地址:北京市昌平區北清路生命科學園博雅CC C座1號樓807
前言
R語言是重要的生信分析軟件之一,不僅可以分析,計算,歸納數據,還可以把數據進行可視化,讓人更容易了解數據更深層的意義。
學習 R 繪圖沒有什么技巧,只有記住常用參數的含義及用法,知道怎么去查找未知參數的含義及用法,再就是多多繪圖,什么東西用得多了,自然就熟了。
如果需要更深入的了解,使用R 幫助。R 使用幫助:?加上函數或參數名。例如?plot,?legend。它可以教你怎么使用這個函數。
如果,想更深入的了解這個函數,可以使用demo().例如demo(graphics)。
通過前言,我們知道R語言可以把數據可視化,下面我們介紹,怎樣讓數據可視化,生成我們需要的柱狀圖,箱線圖,散點圖,熱圖等等。
1.繪圖函數
高級繪圖函數:創建一個新的圖形。簡單的理解,就是在空白的繪圖框上生成基礎的圖形。
函數名 | 功能 |
plot(x) | 以x的元素值為縱坐標、以序號為橫坐標繪圖 |
plot(x,y) | x與y的二元作圖 |
pie(x) | 餅圖 |
boxplot(x) | 盒形圖(也稱箱線圖) |
hist(x) | x的頻率直方圖 |
barplot(x) | x的值的條形圖 |
pairs(x) | 如果x是矩陣或是數據框,作x的各列之間的二元圖 |
coplot(x~y|z) | 關于z的每個數值(或數值區間)繪制x與y的二元圖 |
matplot(x,y) | 二元圖,其中x的第1列對應y的第1列,依次類推 |
qqnorm(x) | 正態分位數-分位數圖 |
image(x,y,z) | x,y,z三元圖 |
heatmap(x) | 熱圖 |
低級繪圖函數:
在現有的圖形上添加元素。簡單的理解,就是在生成的圖形上面,添加自己需要的圖例,標志,注釋等內容,讓人對可視化的圖更容易理解。
函數名 | 功能 |
points(x,y) | 添加點,散點圖 |
lines(x,y ) | 添加線,線 |
text(x,y,labels,…) | 在(x,y)處添加用labels指定的文字 |
mtext(text,side=3,line=0,…) | 在邊空添加用text指定的文字,side=1、 2、3、4 (底部、左邊、上部、右邊) |
segments(x0,y0,x1,y1) | 從(x0,y0)各點到(x1,y1)各點畫線段 |
arrows(x0,y0,x1,y1,...) | 同上,但添加箭頭 |
abline(a,b) | 繪制斜率為b和截距為a的直線 |
abline(h=y) | 在縱坐標y處畫水平線 |
abline(v=x) | 在橫坐標x處畫垂直線 |
abline(lm.obj) | 畫出lm.obj確定的回歸線 |
rect(x1,y1,x2,y2) | 繪制長方形,(x1,y1)為左下角,(x2,y2)為右上角 |
polygon(x,y) | 繪制連接各x,y坐標確定的點的多邊形 |
legend(x,y,legend) | 在點(x,y)處添加圖例,說明內容由legend給定 |
title() | 添加標題,也可添加一個副標題 |
axis(side,vect) | 畫坐標軸,1 、 2 、 3 、 4 (底部、左邊、上部、右邊) |
box() | 在當前的圖上加邊框 |
rug(x) | 在x軸上用短線畫出x數據的位置 |
locator(n,type="n",…) | 獲取鼠標在圖中點擊處的坐標 |
2.繪圖參數
選項 | 功能 |
add=FALSE | 如果是TRUE,疊加圖形到前一個圖上(如果有的話) |
axes=TRUE | 如果是FALSE,不繪制軸與邊框 |
type="p" | 指定圖形的類型,“p”:點,“l”:線,“b”:點連線,“o”:同上,但是線在點上,“h”:垂直線,“s”:階梯式,垂直線頂端顯示數據,“S”:同上,但是垂直線底端顯示數據 |
font | 字體 |
xlim=,ylim= | 指定軸的顯示范圍 |
xlab=,ylab= | 坐標軸的標簽 |
main= | 主標題 |
sub= | 副標題 |
繪圖參數示例:
plot(cars,font.lab=2,main="主標題",sub="副標題",type="p",xlim=c(7,20),ylim=c(20,100))
plot(cars,font.lab=2,main=主標題",sub="副標題",type="p",xlim=c(7,20),ylim=c(20,100),axes=F)
其他繪圖參數:
參數 | 功能 |
adj | 控制關于文字對齊方式 |
bg | 背景色 |
bty | 圖形邊框形狀 |
cex | 符號和文字大小,cex.axis,cex.lab,cex.main,cex.sub |
col | 顏色,col.axis,col.lab,col.main,col.sub |
font | 文字字體,font.axis,font.lab,font.main,font.sub |
las | 坐標軸刻度數字標記方向 |
lty | 線條樣式,1:實線;2:虛線;3:點線;4:點虛線;5:長虛線 |
lwd | 線的寬度 |
mar | 圖形邊空的大小 |
mfcol | c(nr,nc)的向量,前者按列分隔繪圖窗口,后者按行分隔繪圖窗口 |
pch | 繪圖符號的類型 |
ps | 文字大小 |
pty | 繪圖區域類型 |
tck | 軸刻度長度,tck=1時,則繪制grid |
xaxt | 如果xaxt=“n”,設置x軸不顯示,如果yaxt=“n”,設置y軸不顯示 |
3.畫圖面板
par:設置全局繪圖參數的函數。
ask:par(ask=TRUE),產生新的繪圖之前提示操作。
new:FALSE:默認,新圖在下一個 figure region 生成;TRUE:新圖在當前 figure region
mfcol:mfcol=c(3,2):3 行 2 列分割圖形界面。
mfrow:以行的方式分割圖形界面。
mfg:mfg=c(2,2,3,2):
圖片在 3 行 2 列圖形界面中第二行,第二列的位置。
示例:
畫圖面板的參數:
示例:
mar=c(a,b,c,d):設置 plot region 與 figure region 底部、左邊、上部、右邊的距離,單位英寸。
mai=c(a,b,c,d):設置 plot region 與 figure region 底部、左邊、上部、右邊的距離,單位是文本行數。
mgp=c(a,b,c):三個坐標軸成分的位置,軸文本標記、單位記號標記和軸位置與軸線距離;單位是文本行。
4.字體
可以根據數據的多少大小,自己設置需要的字體和字體的大小。
示例:
par(mgp=c(1.6,0.6,0),mar=c(3,3,2,1))
X=1:10;Y=1:10
cex_type=c(0.7,0.8,0.9,1,2,3,4,5,6,7)
plot(X,Y,col="blue",pch=16,
cex=cex_type, #繪圖符號大小,1是正常大小
cex.axis=1.1, #坐標軸刻度數字大小
cex.lab=1.2, #坐標軸標簽大小
cex.main=1.4, #標題文字大小
#cex.sub=1.3, #副標題文字大小
font.axis=3, #坐標軸刻度數字字體,斜體
font.lab=2, #坐標軸標簽字體,粗體
font.main=4, #標題字體,粗斜體
#font.sub=1, #副標題字體,正常
main="字體",
xlim=c(1,12),ylim=c(1,12))
text(X,Y,adj=0,labels=paste("cex=",cex_type),col="red",cex=1.2,font=3)
5.繪圖符號
示例:
R的繪圖符號:pch=1:25
par(mgp=c(1.6,0.6,0),mar=c(3,3,2,1))
pch_type=c(1:5,15:19)
X=1:10;Y=rep(6,10)
plot(X,Y,col=1,pch=pch_type,cex=2,main="pch",font.lab=2)
text(X,Y ,adj=-0.5,labels=paste("pch=",pch_type),srt=90)
6.顏色
顏色名稱:white, black, red, yellow,…
colors()
數字代號:1, 2, 3, 4, 5, 6, 7, 8
顏色函數:rainbow, heat.colors, terrain.colors, topo.colors, cm.colors, colors()
7.圖片保存
輸出到文件
pdf , postscript , xfig, bitmap, pictex, cairo_pdf, svg, png, jpeg, bmp, tiff
pdf("plot.pdf",width=4,height=4)
png("plot.png",width=400,height=600)
dev.off() #繪制完圖形后關閉圖形設備
通過菜單命令保存圖形
實 踐
根據上面的繪圖函數和繪圖參數的理解,一般的繪圖步驟為:
1.打開繪圖窗口,不繪制任何對象
plot(x, y, type="n", xlab="", ylab="", axes=F)
2.添加坐標點 points(x,y)
3.添加坐標軸
axis(1); axis(at=seq(0.2,1.8,0.2), side=2)
4.補齊散點圖的邊框 box()
5.添加標題、副標題、橫軸說明、縱軸說明
title(main="Main title", sub="subtitle", xlab="x-label", ylab="y-label")
下面通過實際的數據,繪制簡單的圖片:
1:散點圖——點線混合圖
>require(stats)
>head(cars)
>plot(cars[,1],cars[,2],pch=16,col="red",xlab="speed",ylab="dist",type="p",font.axis=2,font.lab=2,cex.lab=1.5)
> x=seq(5,25,by=0.1); y=10*sin(x)+50
> lines(x,y,col="green",lwd=2)
> a=5:25; b=2*a+10*cos(a)
> points(a,b,pch=15,col="blue")
> legend("topleft",pch=c(16,-1,15),lty=c(-1,1,-1),col=c("red","green","blue"),legend=c("plot
with point","lines","points"))
2:散點圖——并列散點圖
a=read.table(file="clipboard",header=T)
matplot(a,type="o",pch=15:18,lty=1,bg="yellow",lwd=2,
xlab="Position(nt)",ylab="Frequency",font=2,font.lab=2,cex.lab=1.5)
legend("topright",pch=15:18,lty=1,merge=T,legend=names(a),col=1:4)
3:條形圖——標準條形圖
> a<-read.table("lengthVSnumber.txt")
>bar=barplot(a[,2],ylim=c(0,1.2*max(a[,2])),cex.lab=1.5,names.arg=a[,1],xlab="Length(nt)",font.lab=1.5,ylab="Number of small RNAs",space=0.9,col="blue",main="Length distribution")
>ratio=paste(sprintf("%.2f",a[,2]/sum(a[,2])*100),"%",sep="")
>text(bar,a[,2],labels=ratio,adj=c(0.5,0),cex=0.8,font=2,pos=3)
> abline(h=axTicks(2),lty=2,col=rgb(0,0,0,0.5));
> box()
4:條形圖——堆積條形圖
數據:
h =read.table(“acgt.txt”,head=T)
barplot(t(as.matrix(h)),ylim=c(0,1),xlab="Position",
ylab="Frequency",main="Homo sapiens ",
col=rainbow(4),font=2,cex.lab=1.4)
box()
legend("topright",legend=c("A","G","C","T"),
pch=15,col=rainbow(4))
總結
R語言的繪圖,需要層層漸進的學習,只有學習了了基礎的繪圖函數和參數,才能在其基礎上繪制出更漂亮更生動的圖片,讓您的論文眼前一亮!
![]() | 固話:010-53395839 |
![]() | 郵箱:service@qinglianbio.com |
![]() | 地址:北京市昌平區北清路生命科學園博雅CC C座1號樓807 |