青莲百奥【硬核干货】文章大杀器之 R Language

前言
R语言是重要的生信分析软件之一,不仅可以分析,计算,归纳数据,还可以把数据进行可视化,让人更容易了解数据更深层的意义。
学习 R 绘图没有什么技巧,只有记住常用参数的含义及用法,知道怎么去查找未知参数的含义及用法,再就是多多绘图,什么东西用得多了,自然就熟了。
如果需要更深入的了解,使用R 帮助。R 使用帮助:?加上函数或参数名。例如?plot,?legend。它可以教你怎么使用这个函数。
如果,想更深入的了解这个函数,可以使用demo().例如demo(graphics)。
通过前言,我们知道R语言可以把数据可视化,下面我们介绍,怎样让数据可视化,生成我们需要的柱状图,箱线图,散点图,热图等等。
1.绘图函数
高级绘图函数:创建一个新的图形。简单的理解,就是在空白的绘图框上生成基础的图形。

低级绘图函数:
在现有的图形上添加元素。简单的理解,就是在生成的图形上面,添加自己需要的图例,标志,注释等内容,让人对可视化的图更容易理解。

2.绘图参数

绘图参数示例:


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)
其他绘图参数:

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语言的绘图,需要层层渐进的学习,只有学习了了基础的绘图函数和参数,才能在其基础上绘制出更漂亮更生动的图片,让您的论文眼前一亮!


最后编辑于 2021-04-01 · 浏览 1140