利用绘图函数研究一直数据是一种直观、有效地方法。在R语言中、有两类左图函数,一类是高水平左图函数,即所有的绘图函数均可产生图形,可以有坐标轴、图和坐标轴的说明文字等;另一类是低水平作图函数,这类函数自身无法生成图形,只能在高水平左图函数产生的图形基础上增加新的图形。
高水平作图函数
高水平作图函数有plot()、pairs()、coplot()、qqnorm()、qqline()、hist()和contour()
plot()函数可绘制数据的散点图、曲线图等,它有四种格式:
plot(x,y):其中x、y是向量,生成y关于x的散点图;
plot(x):其中x是一时间序列,生成时间序列图形,如果x是向量,则生成x关于下标的散点图;
plot(f):f是因子,生成f的直方图;
plot(f,y):f是因子,y是向量,生成y关于f水平的箱线图。
plot(df)、plot(~expr)、plot(y~expr):其中df是数据框、y是任意一个对象,expr是对象名称的表达式;
例子:利用四种不同配方的材料A1、A2、A3、A4生产出来的元件,测得其使用寿命如下:绘出四种不同配方材料寿命的箱线图,并比较元件的使用寿命有无明显的差异?
>y<-c(1600,1610,1650,1680,1700,1700,1780,1500,1640,1400,1700,1750,1640,1550,1600,1620,1640,1600,1740,1800,1510,1520,1530,1570,1640,1600)
> f<-factor(c(rep(1,7),rep(2,5),rep(3,8),rep(4,6)))
> plot(f,y)
> Age<-c(13,13,14,12,12,15,11,15,14,14,14,15,12,13,12,16,12,11,15)
>Height<-c)
>Weight<-c)
> df<-da(Age,Height,Weight)
> plot(df)
>#绘制身高和年龄的散点图
> plot(df$Age+df$Height)
>#绘制体重和年龄、体重和身高的散点图
>attach(df)
>plot(Weight~Age+Height)
R语言为显示多变量数据提供了两个非常有用的函数,一个是pair函数,另一个是coplot()函数。
pairs(x):其中x是矩阵或数据框时,绘制矩阵各列的散点图;
coplot(a~b|c)函数如果有三、四个变量时,可以将散点图画得更加详细,其中a、b是数值向量,c是向量或因子;
> pairs(df)
>coplot(Weight~Height | Age)
dotchart(x,....)构造数据x的点图,在点图中,y轴是数据x标记,x轴数据x的数值。
例如,R语言提供了弗吉尼亚州1940年人口死亡率的数据VADeaths:
>dotchart(VADeaths,main="Death Rates in Virginia - 1940")
> dotchart(t(VADeaths),main="Death Rates in Virginia - 1940")
image(x,y,z)
contour(x,y,z)
persp(x,y,z)
其中x、y是数值型向量,z是x、y对应的矩阵(z的行数是x的维数,z的列数是y的维数),image()绘制出三维图形的映像,contour()绘制出三维图形的等值线,persp()绘制出三维图形的表面曲线。
> x<-seq(0,2800,400)
> y<-seq(0,2400,400)
> z<-scan()
1: 1180 1320 1450 1420 1400 1300 700 900
9: 1230 1390 1500 1500 1400 900 1100 1060
17: 1270 1500 1200 1100 1350 1450 1200 1150
25: 1370 1500 1200 1100 1550 1600 1550 1380
33: 1460 1500 1550 1600 1550 1600 1600 1600
41: 1450 1480 1500 1550 1510 1430 1300 1200
49: 1430 1450 1470 1320 1280 1200 1080 940
> Z<-matrix(z,nrow = 8)
> contour(x,y,Z,levels = seq(min(z),max(z),by=80))
> persp(x,y,Z)
在高水平绘图函数中,可以加一些命令,不断完善图的内容,或者增加一些有用的说明。
add = TRUE 表示所绘图在原图上家兔,缺省值为add=FALSE,即新的图替换原图。
axes = FALSE表示所绘图形没有坐标轴,缺省值为axes = TRUE
log = "x"表示x轴的数据取对数,log="y"表示y轴的数据取对数,log="xy"表示x轴与y轴的数据同时取对数。
xlab是x轴的说明,ylab是y轴的说明,main是图的说明,sub是对子图的说明。
低水平作图函数
有时候高水平的作图函数并不能完全达到作图的指标,需要低水平的作图函数对图形予以补充。所有的低水平作图函数所作的图形必须是在高水平作图函数所绘图形的基础之上增加的新图形。
低水平作图函数有points()、lines()、text()、abline()、polygon()、legend()、title()和axis()等。
points()加点函数是在已有图上加点,points(x,y)其功能相当于plot(x,y)
lines()加线函数是在已有图上加线,lines(x,y)其功能相当于plot(x,y,type="l")
text(x,y,labels,...)的作用是在图上加标记,其中x、y是数据向量,labels是说明。
abline()的作用是在图上加直线,abline(a,b)表示画一条y=a+bx的直线;abline(h=y)表示画一条过所有点的水平直线;abline(v=y)表示画一条过所有点的竖直直线;abline)表示绘制线性模型得到的线性方程。
> w<-c)
> h<-c)
> plot(w,h)
> lm.sol<-lm(w~h)
> abline)
polygon(x,y)函数可以在以数据(x,y)为坐标,依次连接所有的点,绘制出一多边形。
title(main,sub)函数的作用是在图上加上标题,可以添加主标题或者子标题;
axis(side)表示在坐标轴上加标记、说明或其他内容,side=1表示所加内容放在图的底部,side=2表示所加内容放在图的左侧,side=3表示所加内容放在图的顶部,side=4表示所加内容放在图的右侧