R语言学习系列18图形元素.docx

上传人:b****6 文档编号:5607840 上传时间:2022-12-29 格式:DOCX 页数:24 大小:341.04KB
下载 相关 举报
R语言学习系列18图形元素.docx_第1页
第1页 / 共24页
R语言学习系列18图形元素.docx_第2页
第2页 / 共24页
R语言学习系列18图形元素.docx_第3页
第3页 / 共24页
R语言学习系列18图形元素.docx_第4页
第4页 / 共24页
R语言学习系列18图形元素.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

R语言学习系列18图形元素.docx

《R语言学习系列18图形元素.docx》由会员分享,可在线阅读,更多相关《R语言学习系列18图形元素.docx(24页珍藏版)》请在冰豆网上搜索。

R语言学习系列18图形元素.docx

R语言学习系列18图形元素

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]"black""red""green3""blue""cyan""magenta""yellow""gray"

设置图形颜色的例:

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)

mpgcyldisphpdratwtqsecvsamgearcarb

MazdaRX421.061601103.902.62016.460144

MazdaRX4Wag21.061601103.902.87517.020144

Datsun71022.84108933.852.32018.611141

cyl<-as.factor(cyl)

cyl

[1]66468684466888888444488884448684

Levels:

468

plot(wt,mpg,col="white")

as.integer(cyl)

[1]22123231122333333111133331113231

points(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^2

lines(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="dotted",

lwd=,equilogs=TRUE)

其中,

nx设置水平网格的数目,ny设置垂直网格的数目;

euilogs默认为TRUE,表示当坐标取对数后,仍使用等距的网格线,若为FALSE表示根据对数函数使用不等距网格线。

实例:

plot(c(0:

10),col="white")

grid(nx=4,ny=8,lwd=1,lty=2,col="blue")

5.函数rug()——添加坐标轴须(小竖线),标示出相应坐标轴上的变量数值的具体位置,坐标轴须的分布意味着该变量的分布。

基本格式为:

rug(x,ticksize=0.03,side=1,lwd=,col=,...)

其中,

x为向量,给出坐标轴须的位置;

ticksize为坐标轴须的长度;

side指定坐标轴须位置,1表示x轴,2表示y轴,3表示顶端,4表示右端;

实例:

set.seed(123)

x<-rnorm(500)

plot(density(x))

rug(x,col="blue")

综合绘图的例:

attach(mtcars)

#mpg归一化

smpg=(mpg-min(mpg))/(max(mpg)-min(mpg))

plot(wt,smpg,ylab="mpg归一化")

lines(density(wt),col="red")#添加核密度曲线

arrows(1.8,0.05,1.5,0.1,angle=10,cex=0.5)

text(2,0.05,"核密度曲线",cex=0.6)

#添加回归线

abline(lm(smpg~wt),lty=2,col="green")

arrows(2,0.5,2,0.7,angle=10,cex=0.5)

text(2,0.45,"回归线",cex=0.6)

#wt与mpg负线性相关,添加最大最小值线段来表示该关系

segments(min(wt),max(smpg),max(wt),min(smpg),lty=3,col="blue")

arrows(3,0.8,2.5,0.76,angle=10,cex=0.5)

text(3.3,0.8,"最大最小值线段",cex=0.6)

grid(nx=4,ny=5,lty=2,col="grey")

detach(mtcars)

用plot函数使用图形参数,也可以分别绘制:

plot(density(wt),col="red")#核密度曲线

plot(wt,fitted(lm(smpg~wt)),type="l",lty=2,col="green")#回归线

plot(seq(min(wt),max(wt),length=100),seq(max(smpg),min(smpg),length=100),type="l",lty=3,col="blue")#最大最小值线

六、图例

图例一般放在图形的空白区域,用来标识每种图形符号分别代表什么,使用legend函数实现,基本格式为:

legend(x,y,legend,fill=NULL,col=,border="black",

lty,lwd,pch,bty="o",bg=,ncol=1,horiz=FALSE,

title=NULL,xpd,...)

其中,

x,y设置图例的位置(默认为左上角),也可使用“bottomright”、“bottom”、“bottomleft”、“left”、“topleft”、“top”、“topright”、“right”、“center”;

legend为字符向量,表示图例中的文字;

fill设置填充颜色;

col设置图例中点或线的颜色;

border设置边框颜色;

horiz设置图例的排列方式,默认FALSE(垂直排列),TRUE为水平排列;

ncol设置图例的列数目,若horiz=TRUE,该项无意义;

pch设置图例中点的样式,取值0~25;

lty设置图例中线的样式,取值0~6;

bg设置图例的背景颜色;

bty设置图例框的样式,默认“o”表示显示边框,“n”表示无边框;

xpd设置是否在区域外放置图例,默认FALSE;

title设置图例标题。

实例可参考【一、颜色】中的例。

七、坐标轴

设置主坐标轴(x轴,y轴)的范围和刻度标记,以及副坐标轴(右侧纵坐标)的相关属性,使用axis函数实现,基本格式为:

axis(side,at=NULL,labels=TRUE,tick=TRUE,

pos=,xlim=,ylim=,outer=FALSE,font=,col=,

lty="solid",lwd=1,lwd.ticks=,col.ticks=,axes=TRUE,

las=,xhat=,yhat=,xaxs=,yaxs=,...)

其中,

side表示哪个坐标轴,1,2,3,4分别表示下,左,上,右;

at设置坐标轴各刻度标记的位置;

labels设置坐标值各刻度的名称(与at参数一致);

tick设置是否画出坐标轴;

pos设置原点坐标;

xlim,ylim设置坐标轴范围,c(from,to);

outer设置是否将坐标轴绘制在图形区域之外;

font设置刻度标记的字体:

1正常,2粗体,3斜体,4粗斜体;

lty设置坐标轴的样式:

0不画线,1实线,2虚线,3点线;

lwd设置坐标轴的宽度:

1正常,小于1变细,大于1变粗;

lwd.ticks和col.ticks分别设置刻度线的宽度和颜色;

las设置标签是否平行于坐标轴:

0平行于坐标轴,1水平,2垂直于坐标轴,3竖直;

axes设置是否显示坐标轴;默认TRUE显示坐标轴;

xhat,yhat设置坐标值样式,默认“s”标准样式,“n”隐藏x或y轴;

xaxs,yaxs坐标轴长度,默认“r”数据范围再扩大4%,“1”原始数据范围。

实例:

plot(c(1:

12),col="white",xaxt="n",yaxt="n",ann=FALSE)#绘制空白画布,不要坐标轴

axis(1,at=1:

12,col.axis="red",labels=c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"))

axis(2,at=seq(1,12,length=10),col.axis="red",labels=1:

10,las=2)

axis(3,at=seq(1,12,length=7),col.axis="blue",cex.axis=0.7,tck=-.01,labels=c("Mon","Tues","Wed","Thu","Fri","Sat","Sun"))

axis(4,at=seq(1,12,length=10),col.axis="blue",cex.axis=0.7,tck=-.01,labels=round(seq(0,1,length=10),1),las=2)

八、子图

要在一张画布上放置m×n个子图,可以用函数par和layout实现。

1.函数par()

该函数可以设置大多数绘图全局参数。

子图相关的参数:

mfrow/mfcol=c(m,n),把画布分为m×n份(m行n列),mfrow表示逐行从左到右作图,mfcol表示逐列从上到下作图;

mai/mar=c(b,l,t,r),设置图形边距,四个数分别为下、左、上、右边距,mai以英寸为单位,mar以行为单位;

mgp设置坐标轴位置,3维数值向量,分别为标题、刻度标签、刻度的位置;

oma设置外边界宽度,类似mar,默认为c(0,0,0,0)

实例:

mfrow1=par(mfrow=c(2,3))#将图形按2行3列排列

for(iin1:

6){

plot(c(1:

i),main=paste("I'mimage:

",i))

}

#改变图形边距

mar1<-par(mar=c(4,5,2,3))

for(iin1:

6){

plot(c(1:

i),main=paste("I'mimage:

",i))

}

par(mar1)#去除par()函数mar参数的设置mar1

#改变外边界宽度

oma1=par(oma=c(4,5,2,3))

for(iin1:

6){

plot(c(1:

i),main=paste("I'mimage:

",i))

}

par(oma1)#去除par()函数oma参数的设置oma1

#改变坐标轴位置

mgp1=par(mgp=c(1,2,3))

for(iin1:

6){

plot(c(1:

i),main=paste("I'mimage:

",i))

}

par(mgp1)#去除par()函数mgp参数的设置mgp1

par(mfrow1)#去除par()函数mfrow参数的设置mfrow1

2.函数layout()

该函数可以不均等地分割画布,基本格式为:

layout(mat,widths=rep.int(1,ncol(mat)),

heights=rep.int(1,nrow(mat)),respect=FALSE)

其中

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1