【硬核干貨】文章大殺器之 R Language

時間:2020-04-17

前言

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的第一列對應y的第一列,依次類推
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
mfrow
c(nr,nc)的向量,前者按列分隔繪圖窗口,后者按行分隔繪圖窗口
pch 繪圖符號的類型
ps 文字大小
pty 繪圖區域類型
tck 軸刻度長度,tck=1時,則繪制grid
xaxt
yaxt
如果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-58418483

Copyright ? 2004-2016 北京青蓮百奧生物科技有限公司 All Rights Reserved . 京ICP備17052224號-1 [后臺管理]

云南十一选五预测