打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
R语言基本绘图参数
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语言与网站分析
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
R极简教程
R语言plot函数参数合集
R语言从入门到精通:Day7
诹图系列(3): 条形图
R语言绘图基础一
R语言学习笔记 【转】
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服