18.图形元素目录:一.函数plot二.颜色三.点四.文字五.线条六.图例七.坐标轴八.子图九.图形保存正文:R语言具有强大的图形可视化功能,可以逐条输入语句构建图形元素(颜色、点、线、文字、及图例等),逐渐完善图形特征,直到得到想要的效果。图形元素的显示可以用图形函数和par函数的绘图参数来改良,也可以用绘制图形元素的基础函数来控制。一、函数plot()绘制二维散点图,基本格式为:plot(x,y=NULL,type=p,xlim=NULL,ylim=NULL,log=,main=NULL,sub=NULL,xlab=NULL,ylab=NULL,ann=...,axes=TRUE,frame.plot=axes,...)其中,x,y为坐标值,要求长度相同;type指定图形的类型,默认为p(圆圈的点),l表示线,b表示点线,c表示挖去点的线,o穿过点的线,s和S表示两种阶梯形,h表示像直方图的竖线;xlim设定x轴的范围;ylim设定y轴的范围;log=x或y或xy,设置坐标值用e的幂次形式显示;main设定主标题;sub设定副标题;xlab设定x轴标签;ylab设定y轴标签;ann设置是否显示标题和坐标轴标签;axes设置是否显示坐标轴;frame.plot设置是否显示图形区域的外边框二、颜色1.绘图参数col用来设置图形元素的颜色R语言自带657种颜色,用函数colors()可显示它们的名字。R语言提供了固定调色板函数palette()包括8种颜色(可自定义,用palette(default)恢复默认),则用数字1~8表示相应的颜色。palette()#默认包含的8种颜色[1]blackredgreen3bluecyanmagentayellowgray设置图形颜色的例:attach(mtcars)plot(wt,mpg,col=red)points(wt[cyl==6],mpg[cyl==6],col=3)points(wt[cyl==8],mpg[cyl==8],col=4)cl=c(red,green,blue)legend(5,35,c(4,6,8),pch=1,col=cl,bty=n)detach(mtcars)注:若设定颜色的整数>8,将取余。2.生成渐变颜色R语言提供了一系列渐变颜色的生成函数,用来控制颜色值逐步变化。(1)RGB模型(红绿蓝混合)rgb(red,green,blue,alpha,max)将RGB颜色转化为16进制数值;max指定最大值255或1;red,green,blue在[0,max]中取值;alpha为透明度,0表示完全透明,取max值表示完全不透明;例如,rgb-rgb(red=255,green=1:255,blue=0,max=255)生成#FF0100#FF0200…#FFFF00共255个颜色值,依次使用它们实现渐变效果。(2)彩虹色(赤橙黄绿青蓝紫)rainbow(n,start,end,alpha)(3)高温、白热化(红黄白)heat.colors(n,start,end,alpha)(4)地理图形(绿黄棕白)terrain.colors(n,start,end,alpha)(5)蓝青黄棕topo.colors(n,start,end,alpha)(6)青白粉红cm.colors(n,start,end,alpha)其中,n设定产生颜色的数目;start和end设定该类颜色的一个子集,生成的颜色将从该子集中产生;alpha为透明度。(7)RColorBrewer包提供的3套配色方案col=brewer.pal(n,name)n为颜色数目(≥3);name为颜色组名。用display.brewer.all(type=...)设定调色方案:“seq”表示连续型(连续渐变);“div”表示极端型(用深色表示两端,浅色表示中间,可用来标记数据的离群点);“qual”表示离散型(生成一系列彼此差异比较明显的颜色,常用来标记分类数据)。cl=brewer.pal(3,Dark2)#使用RColorBrewer包配色方案par(mfrow=c(1,1))plot(wt,mpg,col=cl[1])points(wt[cyl==6],mpg[cyl==6],col=cl[2])points(wt[cyl==8],mpg[cyl==8],col=cl[3])legend(5,35,c(4,6,8),pch=1,col=cl,bty=n)cl=rainbow(3)#使用rainbow函数配色plot(wt,mpg,col=cl[1])points(wt[cyl==6],mpg[cyl==6],col=cl[2])points(wt[cyl==8],mpg[cyl==8],col=cl[3])legend(5,35,c(4,6,8),pch=1,col=cl,bty=n)pie(rep(1,12),col=rainbow(12))三、点用函数points()在画布中添加点,基本格式为:points(x,y,pch=…,cex=…,bg=…,font=…,lwd=…)其中,x,y为点的坐标位置;pch指定点的样式,取0~25或*,.等符号:cex设定点的大小,默认为1(不缩放),小于1表示缩小,大于1表示放大;col设定点边框填充的颜色;bg设定点内部填充的颜色,仅限21~25号样式的点;font设置字体,默认为1表示正常字体,2表示粗体,3表示斜体,4表示粗斜体;lwd设置点边框的宽度,默认为1(不缩放),小于1表示缩小,大于1表示放大attach(mtcars)head(mtcars,3)mpgcyldisphpdratwtqsecvsamgearcarbMazdaRX421.061601103.902.62016.460144MazdaRX4Wag21.061601103.902.87517.020144Datsun71022.84108933.852.32018.611141cyl-as.factor(cyl)cyl[1]66468684466888888444488884448684Levels:468plot(wt,mpg,col=white)as.integer(cyl)[1]22123231122333333111133331113231points(wt,mpg,pch=as.integer(cyl),col=as.integer(cyl))legend(5,35,c(4,6,8),pch=1:3,col=1:3,bty=n)detach(mtcars)或者使用绘图参数改变点的样式,结果是一样的:plot(wt,mpg,pch=as.integer(cyl),col=as.integer(cyl))legend(5,35,c(4,6,8),pch=2:4,col=2:4,bty=n)四、文字文字属性参数:cex设定字体大小,默认为1(不缩放),小于1表示缩小,大于1表示放大;col设定字体颜色;font设置字体样式,默认为1表示正常字体,2表示粗体,3表示斜体,4表示粗斜体。1.函数title()——给图形添加标题基本格式为:title(main=...,sub=...,xlab=...,ylab=...,outer=FALSE,...)其中,main为主标题,sub为副标题,xlab为x轴标题,ylab为y轴标题,它们的值都是列表list(text,font=,col=,cex=,…);outer,默认为FALSE,设置是否把标题在图形区域外面显示。实例:plot(c(0:5),col=white,xlab=,ylab=)title(main=list(主标题,cex=1.5),sub=list(副标题,cex=1.2),xlab=x轴标题,ylab=y轴标题)2.函数text()——向图形任意位置添加文字基本格式为:text(x,y=NULL,labels=...,cex=1,col=NULL,font=NULL,...)其中,x,y设定文字的位置;labels为文字内容。实例:plot(c(0:5),col=white)text(3,2,labels=font=4:粗斜体字体,font=4,cex=1.5)3.函数mtext()——向图形的四条边上添加文字基本格式为:mtext(text,side=3,line=0,cex=NA,col=NA,font=NA,...)其中,text为文字内容;side设置哪一条边,1表示下,2表示左,3表示上,4表示右;line设置文字与图形边缘的距离,默认为0实例:mtext(side=1:下边,side=1,line=2);mtext(side=2:左边,side=2,line=2)mtext(side=3:上边,side=3);mtext(side=4:右边,side=4)cyl=as.factor(cyl)plot(wt,mpg,col=white,xlab=,ylab=)text(wt,mpg,cyl,col=as.integer(cyl)+1)title(main=list(MilesperGallonvs.WeightbyCylinder,cex=1.5),xlab=Weight,ylab=MilesperGallon)#或者通过绘图参数实现相同的效果plot(wt,mpg,pch=as.character(cyl),col=as.integer(cyl)+1,xlab=Weight,ylab=MilesperGallon,main=MilesperGallonvs.WeightbyCylinder,cex.main=1.5)五、线条线条属性参数:lty设置线条样式,用数字表示:lwd设置线条粗细,默认为1(正常宽度),小于1(变细),大于1(变粗)。1.函数lines()——绘制曲线基本格式为:lines(x,y,type=l,lty=,lwd=,col=,...)其中,x,y为点的坐标位置。实例:lines(x,y,lwd=1.5,lty=1,col=red)plot(c(-4,4),c(-1,10),col=white)x-seq(-3,3,0.1)y-x^2lines(x,y,lwd=1.5,lty=1,col=red)2.函数abline()——绘制直线基本格式为:abline(a,b,h,v,reg=,coef=,lty=,lwd=,col=,...)其中,a为截距,b为斜率,即y=a+bx;h为绘制水平线的纵轴值,v为绘制垂直线的横轴值;reg和coef可用来提取线性回归的结果绘制直线,例如z-lm(dist~speed,data=cars)plot(cars)abline(reg=z)#同abline(z),也同下句:abline(coef=coef(z))实例:plot(c(0:10),col=white)abline(h=c(3,5))abline(v=c(4,7,9),lty=2,col=blue)abline(a=2,b=1,lwd=1.5,col=red)3.函数segment()——绘制线段函数arrows()——绘制带箭头的线基本格式为:segments(x0,y0,x1,y1,lty=,lwd=,col=…)arrows(x0,y0,x1,y1,angle=,length=,lty=,lwd=,col=…)其中,x0,y0为起点坐标,x1,y1为终点的坐标;angle设置箭头与线段之间的夹角;length设置箭头的长度。实例:plot(c(0:10),col=white)segments(2,1,4,8)arrows(4,0,7,3,angle=30,lty=2,col=red)arrows(4,2,7,5,angle=60,col=green)4.函数grid()——给图形添加网格线基本格式为:grid(nx=,ny=nx,col=lightgray,lty=