R语言基本绘图参数
R语言除了具有优秀的数据处理能力外,对于数据的展现也具有极其灵活和强大的作用。
R语言绘图函数主要包括:低级绘图函数,高级绘图函数,扩展绘图包函数。
工欲善其事,必先利其器。要想绘制一副精美的图形,必须掌握R中的基本绘图参数。
我们浏览一下R语言中的基本图形参数。
pch:点的符号,指定绘制点时使用的符号。
x y 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){
(x[i+1],y[i+1],pch=i,bg="red")
} else {
(x[i+1],y[i+1],pch=i)
text(x[i+1]+0.4,y[i+1], = 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, = "cex=0.5",cex=.5)
text(x=2,y=2, = "cex=0.8",cex=.8)
text(x=3,y=3, = "cex=1",cex=1)
text(x=4,y=4, = "cex=1.2",cex=1.2)
text(x=5,y=5, = "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){
(h = i,lty=i)
text(x=0.1,y=i-0.1, = 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, = paste("lwd=",0.5))
lines(1:5,rep(2,5),lwd=1 );text(0.5,2, = paste("lwd=",1))
lines(1:5,rep(3,5),lwd=2 );text(0.5,3, = paste("lwd=",1.5))
lines(1:5,rep(4,5),lwd=3 );text(0.5,4, = paste("lwd=",2))
颜色(比较重要)
col:默认颜色向量自动循环使用
col.axis:坐标轴刻度文字的颜色
col.lab:坐标轴标签大的颜色
col.main:标题的颜色
col.sub:副标题的颜色
fg:前景色
bg:背景色
R语言默认提供了自带的固定种类的颜色。
()提供了657种颜色
读者可以自行选取想要的颜色
()[grep('red',())] #查找含有‘red’字符的
我们也可以将657种颜色绘制出来
pdf('1.pdf',=100)
par(mar=c(0,8,0,0))
(rep(1,(())),col=(),names.arg = (),horiz = T, las=1,xaxt='n')
dev.off()
现将部分颜色展示如下:
R中也提供了特定颜色主题的配色方案
():彩虹的颜色
():从红色到黄色再到白色
.():从绿色到黄色再到棕色最后到白色
topo.():从蓝色到青色再到黄色最后到棕色
cm.():从青色到白色再到粉红色
par(mfrow=c(5,1),xaxs='i',yaxs='i',mar=c(0.1,0.1,2,0.1))
n (rep(1,n),col=(n),=(n),axes=F,main="()")
(rep(1,n),col=heat.(n),=heat.(n),axes=F,main="heat.()")
(rep(1,n),col=.(n),=.(n),axes=F,main=".()")
(rep(1,n),col=topo.(n),=topo.(n),axes=F,main="topo.()")
(rep(1,n),col=cm.(n),=cm.(n),axes=F,main="cm.()")
此外,颜色扩展包提供了三套很好的配色方案
连续型:,通常用来标记数值的大小
极端型:生成用深色强调两端,浅色标识中部的系列颜色,用来标记数据中的离群点
离散型:生成一系列彼此差异比较明显的颜色,用来标记分类数据。
()
..all(type="seq") #连续型
..all(type="div") #极端性
..all(type="qual")#离散型
..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:字体磅值
:绘制文本时使用的字体族(serif:衬线,sans:无衬线,mono:等宽)
在系统中,我们可以查看的具体映射:
如果以pdf输出图形的话,可以利用函数查看在你的系统中有哪些字体可用
查看font类型:
plot(0:5,0:5,type="n",xlab = '',ylab = '',axes = F,main="font类型")
text(1,1, = "font=1",font=1,cex=2)
text(2,2, = "font=2",font=2,cex=2)
text(3,3, = "font=3",font=3,cex=2)
text(4,4, = "font=4",font=4,cex=2)
图形尺寸和边界尺寸
pin:以英寸表示的图形尺寸(宽和高)
mai:以数值向量表示的边界大小(顺序是下左上右)
mar:以数值向量表示的边界大小(顺序是下左上右),默认值是c(5,4,4,2)+0.1
坐标轴
语法规则:axis(side = ,at = , = ,tick = ,line = ,pos = ,outer = ,font = ,lty = ,... = )
参数
描述
side
一个整数,(1=下,2=左,3=上,4=右)
at
一个数值型向量,表示需要绘制刻度线的位置
一个字符型向量,表示置于刻度线旁边的文字标签(如果为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()函数同样可以设置各边框的线条样式
参考线
语法规则:(a = ,b = ,h = ,v = ,reg = ,coef = ,untf = ,... = )
a、b:截距和斜率
h、v:水平线和垂直线
coef:回归系数,提供给a、b值
网格线
语法规则:grid(nx = ,ny = ,col = ,lty = ,lwd = , = )
nx:设置垂直网格线数目
ny:设置水平网格线数目
线段
()函数
语法规则:(x0 = ,y0 = ,x1 = ,y1 = ,col = ,lty = ,lwd = ,... = )
x0和y0表示线段的起始点,
x1和y1表示线段的终点坐标
箭头
语法规则:(x0 = ,y0 = ,x1 = ,y1 = , = ,angle = ,code = ,col = ,lty = ,lwd = ,... = )
x0、y0、x1、y1代表绘制的起始和终点坐标
:箭头边缘的长度
angle:箭头角度
code:在起点还是终点或者两者都绘制箭头(0:不绘制,1:起点,2:终点,3:两端)
plot(1:10,1:10,axes=F,xlab='',ylab='',type="n")
(1,1,8,1,angle=90, = 0.1,code = 0);text(9,1,'angle=90')
(1,3,8,3,angle=60, = 0.1,code = 1);text(9,3,'angle=60')
(1,5,8,5,angle=45, = 0.1,code = 2);text(9,5,'angle=45')
(1,7,8,7,angle=30, = 0.1,code =3);text(9,7,'angle=30')
(1,9,8,9,angle=0, = 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函数和函数
par中图形参数mfrow=c(nrow,ncol)
函数更加灵活,多样。
语法规则:(mat = , = , = , = )
mat:自定义的矩阵
:各列宽组成的向量
:各行高度值组成的一个向量
:逻辑值或者是一个矩阵对象
mat (mat,=c(1,1,2), = c(1,1))
()
hist(mpg,main='')#高:50%,宽:50%
hist(mpg,main='')#高:50%,宽:25%
hist(mpg,main='')#高:50%,宽:25%
hist(mpg,main='')#高:100%,宽:50%
()
若你想要精细布局你的图形,你还可以借助于fig函数
首先我们要知道一副图形,它的左下角对应的是c(0,0),右上角为c(1,1)
而fig(x1,x2,y1,y2),x1,x2横向坐标占据空间范围,y1,y2纵向坐标范围。
opar par(fig=c(0,0.8,0.2,1))
()
plot(mpg~wt,xlab='')
par(fig=c(0,0.8,0,0.45),new=T)
(wt, = T)
par(fig=c(0.7,1,0,1),new=T)
(mpg)
par(opar)
()
R的基本绘图参数还有很多,若读者感兴趣,可以参考par函数中的内容。可以说你的par函数掌握的怎么样,就决定着你的R语言基本绘图能力如何。
参考书籍:R语言实战、R语言与网站分析