分享

R语言基本绘图参数

 居子neyv1ivw22 2023-02-08 发布于广东

R语言除了具有优秀的数据处理能力外,对于数据的展现也具有极其灵活和强大的作用。

R语言绘图函数主要包括:低级绘图函数,高级绘图函数,扩展绘图包函数。

工欲善其事,必先利其器。要想绘制一副精美的图形,必须掌握R中的基本绘图参数。

我们浏览一下R语言中的基本图形参数。

pch:点的符号,指定绘制点时使用的符号。

x<-rep(1:5,times=6)
y<-rep(1:6,each=5)
plot(0,type='n',xlim=c(1,6),ylim=c(7,1),axes=F,main='pch取值',xlab='',ylab='')
for(i in 0:25){
  if(i > 20){
   points(x[i 1],y[i 1],pch=i,bg='red')
  } else {
    points(x[i 1],y[i 1],pch=i)
  }
  text(x[i 1] 0.4,y[i 1],labels = paste('pch=',i),cex=0.8)
}


对于符号21:25,你还可以指定边界的颜色(col=)和填充颜色(bg=)。

另外,pch还可以取值: *  . 。   -  |  o  等,读者自己尝试一下。

cex:指定符号的大小,一般cex 是一个数值,表示绘图符号相对于默认大小的缩放倍数。默认大小为1,1.5表示放大为默认值的1.5倍,0.5表示缩小50%。

plot(0,type='n',xlim=c(1,6),ylim=c(6,1),axes=F,
     main='cex缩放倍数',xlab='',ylab='')
text(x=1,y=1,labels = 'cex=0.5',cex=.5)
text(x=2,y=2,labels = 'cex=0.8',cex=.8)
text(x=3,y=3,labels = 'cex=1',cex=1)
text(x=4,y=4,labels = 'cex=1.2',cex=1.2)
text(x=5,y=5,labels = 'cex=1.5',cex=1.5)



lty:指定线条类型,主要包括实线、虚线、点线、点划线等7种样式

plot(0,type='n',xlim=c(0,6),ylim=c(6,0),axes=F,
     main='lty类型',xlab='',ylab='')
for ( i in 0:6){
  abline(h = i,lty=i)
  text(x=0.1,y=i-0.1,labels = paste('lty=',i))
}

lwd:线条宽度,lwd是以默认值的相对大小来表示的(默认值为1)

plot(0,type='n',xlim=c(0,6),ylim=c(6,0),axes=F,
     main='lwd宽度',xlab='',ylab='')
lines(1:5,rep(1,5),lwd=0.5);text(0.5,1,labels = paste('lwd=',0.5))
lines(1:5,rep(2,5),lwd=1 );text(0.5,2,labels = paste('lwd=',1))
lines(1:5,rep(3,5),lwd=2 );text(0.5,3,labels = paste('lwd=',1.5))
lines(1:5,rep(4,5),lwd=3 );text(0.5,4,labels = paste('lwd=',2))


颜色(比较重要)

col:默认颜色向量自动循环使用

col.axis:坐标轴刻度文字的颜色

col.lab:坐标轴标签大的颜色

col.main:标题的颜色

col.sub:副标题的颜色

fg:前景色

bg:背景色

R语言默认提供了自带的固定种类的颜色。

colors()提供了657种颜色

读者可以自行选取想要的颜色

colors()[grep('red',colors())] #查找含有'red’字符的

我们也可以将657种颜色绘制出来

pdf('1.pdf',height=100)
par(mar=c(0,8,0,0))
barplot(rep(1,length(colors())),col=colors(),names.arg = colors(),horiz = T, las=1,xaxt='n')
dev.off()

现将部分颜色展示如下:

R中也提供了特定颜色主题的配色方案

rainbow():彩虹的颜色

heatcolors():从红色到黄色再到白色

terrain.colors():从绿色到黄色再到棕色最后到白色

topo.colors():从蓝色到青色再到黄色最后到棕色

cm.colors():从青色到白色再到粉红色

par(mfrow=c(5,1),xaxs='i',yaxs='i',mar=c(0.1,0.1,2,0.1))
n<-1000
barplot(rep(1,n),col=rainbow(n),border=rainbow(n),axes=F,main='Rainbow()')
barplot(rep(1,n),col=heat.colors(n),border=heat.colors(n),axes=F,main='heat.colors()')
barplot(rep(1,n),col=terrain.colors(n),border=terrain.colors(n),axes=F,main='terrain.colors()')
barplot(rep(1,n),col=topo.colors(n),border=topo.colors(n),axes=F,main='topo.colors()')
barplot(rep(1,n),col=cm.colors(n),border=cm.colors(n),axes=F,main='cm.colors()')


此外,RcolorBrewer颜色扩展包提供了三套很好的配色方案

连续型:Sequential,通常用来标记数值的大小

极端型:生成用深色强调两端,浅色标识中部的系列颜色,用来标记数据中的离群点

离散型:生成一系列彼此差异比较明显的颜色,用来标记分类数据。

library(RColorBrewer)
display.brewer.all(type='seq') #连续型
display.brewer.all(type='div') #极端性
display.brewer.all(type='qual')#离散型
display.brewer.all()           #三种类型全部输出

读者可以尝试分表输出三种类型

文本属性:文本大小和字体

文本大小

cex:默认值为1

cex.axis:坐标轴刻度文字缩放倍数

cex.lab:坐标轴标签缩放倍数

cex.mian:标题缩放倍数

cex.sub:副标题缩放倍数

字体

font:一般用1,2,3,4,代表正常体,粗体,斜体,粗斜体

font.axis:坐标轴刻度字体样式

font.lab:坐标轴标签字体样式

font.main:标题字体样式

font.sub:副标题字体样式

ps:字体磅值

family:绘制文本时使用的字体族(serif:衬线,sans:无衬线,mono:等宽)

在window系统中,我们可以查看family的具体映射:


如果以pdf输出图形的话,可以利用函数查看在你的系统中有哪些字体可用


查看font类型:

plot(0:5,0:5,type='n',xlab = '',ylab = '',axes = F,main='font类型')
text(1,1,labels = 'font=1',font=1,cex=2)
text(2,2,labels = 'font=2',font=2,cex=2)
text(3,3,labels = 'font=3',font=3,cex=2)
text(4,4,labels = 'font=4',font=4,cex=2)


图形尺寸和边界尺寸

pin:以英寸表示的图形尺寸(宽和高)

mai:以数值向量表示的边界大小(顺序是下左上右)

mar:以数值向量表示的边界大小(顺序是下左上右),默认值是c(5,4,4,2) 0.1

坐标轴

语法规则:axis(side = ,at = ,labels = ,tick = ,line = ,pos = ,outer = ,font = ,lty = ,... = )

参数 描述
side 一个整数,(1=下,2=左,3=上,4=右)
at 一个数值型向量,表示需要绘制刻度线的位置
labels 一个字符型向量,表示置于刻度线旁边的文字标签(如果为NULL,则将直接使用at中的值)
pos 坐标轴线绘制位置的坐标(即与另一条坐标轴相交位置的值)
las 标签是否平行于(=0)或垂直于(=2)坐标轴

tck

刻度线的长度,以相对于绘图区域大小的分数表示(负值表示在图形外侧,正值表示在图形内侧,0表示禁用刻度,1表示绘制网格线);默认值为-0.01

边框

bty参数可以设置图形边框样式,取值为 o,l,7,c,u,j

par(mfrow=c(2,3))
for(i in c('o','l','u','7','c',']')){
  plot(1:10,1:10,axes=T,xlab='',ylab='',bty=i,main=paste('bty=',i))
}

当然box()函数同样可以设置各边框的线条样式

参考线

语法规则:abline(a = ,b = ,h = ,v = ,reg = ,coef = ,untf = ,... = )

a、b:截距和斜率

h、v:水平线和垂直线

coef:回归系数,提供给a、b值

网格线

语法规则:grid(nx = ,ny = ,col = ,lty = ,lwd = ,equilogs = )

nx:设置垂直网格线数目

ny:设置水平网格线数目

线段

segments()函数

语法规则:segments(x0 = ,y0 = ,x1 = ,y1 = ,col = ,lty = ,lwd = ,... = )

x0和y0表示线段的起始点,

x1和y1表示线段的终点坐标

箭头

语法规则:arrows(x0 = ,y0 = ,x1 = ,y1 = ,length = ,angle = ,code = ,col = ,lty = ,lwd = ,... = )

x0、y0、x1、y1代表绘制的起始和终点坐标

length:箭头边缘的长度

angle:箭头角度

code:在起点还是终点或者两者都绘制箭头(0:不绘制,1:起点,2:终点,3:两端)

plot(1:10,1:10,axes=F,xlab='',ylab='',type='n')
arrows(1,1,8,1,angle=90,length = 0.1,code = 0);text(9,1,'angle=90')
arrows(1,3,8,3,angle=60,length = 0.1,code = 1);text(9,3,'angle=60')
arrows(1,5,8,5,angle=45,length = 0.1,code = 2);text(9,5,'angle=45')
arrows(1,7,8,7,angle=30,length = 0.1,code =3);text(9,7,'angle=30')
arrows(1,9,8,9,angle=0, length = 0.1,code = 1);text(9,9,'angle=0')


type样式

在低级绘图函数中type有9中类型

par(mfrow=c(3,3))
for(i in c('p','l','b','c','o','h','s','S','n')){
  plot(1:10,1:10,axes=T,xlab='',ylab='',type=i,main=paste('type=',i))
}



图形布局

par函数和layout函数

par中图形参数mfrow=c(nrow,ncol)

layout函数更加灵活,多样。

语法规则:layout(mat = ,widths = ,heights = ,respect = )

mat自定义的矩阵

widths:各列宽组成的向量

heights:各行高度值组成的一个向量

respect:逻辑值或者是一个矩阵对象

mat<-matrix(c(1,1,4,2,3,4),nrow = 2,byrow = T)
layout(mat,widths=c(1,1,2),heights = c(1,1))
attach(mtcars)
hist(mpg,main='')#高:50%,宽:50%
hist(mpg,main='')#高:50%,宽:25%
hist(mpg,main='')#高:50%,宽:25%
hist(mpg,main='')#高:100%,宽:50%

detach(mtcars)


若你想要精细布局你的图形,你还可以借助于fig函数

首先我们要知道一副图形,它的左下角对应的是c(0,0),右上角为c(1,1)

fig(x1,x2,y1,y2),x1,x2横向坐标占据空间范围,y1,y2纵向坐标范围。

opar<-par(no.readonly = T)
par(fig=c(0,0.8,0.2,1))
attach(mtcars)
plot(mpg~wt,xlab='')
par(fig=c(0,0.8,0,0.45),new=T)
boxplot(wt,horizontal = T)
par(fig=c(0.7,1,0,1),new=T)
boxplot(mpg)
par(opar)
detach(mtcars)


R的基本绘图参数还有很多,若读者感兴趣,可以参考par函数中的内容。可以说你的par函数掌握的怎么样,就决定着你的R语言基本绘图能力如何。

参考书籍:R语言实战、R语言与网站分析

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多