dxy logo
首页丁香园病例库全部版块
搜索
登录

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

发布于 2021-04-01 · 浏览 1140 · IP 河北河北
这个帖子发布于 4 年零 31 天前,其中的信息可能已发生改变或有所发展。




img


前言

R语言是重要的生信分析软件之一,不仅可以分析,计算,归纳数据,还可以把数据进行可视化,让人更容易了解数据更深层的意义。

学习 R 绘图没有什么技巧,只有记住常用参数的含义及用法,知道怎么去查找未知参数的含义及用法,再就是多多绘图,什么东西用得多了,自然就熟了。

如果需要更深入的了解,使用R 帮助。R 使用帮助:?加上函数或参数名。例如?plot,?legend。它可以教你怎么使用这个函数。

如果,想更深入的了解这个函数,可以使用demo().例如demo(graphics)。

通过前言,我们知道R语言可以把数据可视化,下面我们介绍,怎样让数据可视化,生成我们需要的柱状图,箱线图,散点图,热图等等。

1.绘图函数

高级绘图函数:创建一个新的图形。简单的理解,就是在空白的绘图框上生成基础的图形。

img




低级绘图函数:

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

img



2.绘图参数


img




绘图参数示例:

img
img

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)




其他绘图参数:


img

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 列图形界面中第二行,第二列的位置。

示例:

img


画图面板的参数:

示例:

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):三个坐标轴成分的位置,轴文本标记、单位记号标记和轴位置与轴线距离;单位是文本行。


img

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) 


img


5.绘图符号

示例:


R的绘图符号:pch=1:25

img

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()

img

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"))

img

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)

img

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()

img

4:条形图——堆积条形图

数据:


img

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))

img

总结

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

img
img

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

回复10 3

全部讨论0

默认最新
avatar
分享帖子
share-weibo分享到微博
share-weibo分享到微信
认证
返回顶部