1、R绘图功能,R具备卓越的绘图功能,通过参数设置对图形进行精确控制。绘制的图形能满足出版印刷的要求,可以输出Jpg、tiff、eps、emf、pdf、png等各种格式。通过与GhostScript软件的结合,可以生成600dpi,1200dpi的等各种分辨率和尺寸的图形。绘图是通过绘图函数结合相应的选项完成的。绘图函数包括高级绘图函数和低级绘图函数。,1,高级绘图函数,2,低级绘图函数,3,绘图参数,参数用在函数内部,在没有设定值时使用默认值。 font = 字体,lty = 线类型,lwd = 线宽度,pch = 点的类型, xlab = 横坐标,ylab = 纵坐标, xlim = 横坐标范
2、围, ylim = 纵坐标范围, 也可以对整个要绘制图形的各种参数进行设定 par(),4,举例:绘图,生成0到2之间的50个随机数,分别命名为x,y x - runif(50,0,2) y - runif(50,0,2) 绘图:将主标题命名为“散点图”, 横轴命名为”横坐标”, 纵轴命名为“纵坐标” plot(x, y, main=“散点图“, xlab=“横坐标“, ylab=“纵坐标“) text(0.6,0.6,“text at (0.6,0.6)“) abline(h=.6,v=.6),5,图24 绘图举例,6,例:分步绘图,1.打开绘图窗口,不绘制任何对象 plot(x, y, t
3、ype=“n“, xlab=“, ylab=“, axes=F) 2.添加坐标点 points(x,y) 3.添加坐标轴 axis(1); axis(at=seq(0.2,1.8,0.2), side=2) 4.补齐散点图的边框 box() 5.添加标题、副标题、横轴说明、纵轴说明 title(main=“Main title“, sub=“subtitle“, xlab=“x-label“, ylab=“y-label“),7,图25 分步绘图,8,一页多图,图26 一页多图 par() par(mfrow=c(2,2) .,9,在原有图形上添加元素,举例: x - rnorm(100) #
4、 生成随机数 hist(x,freq=F) # 绘制直方图 curve(dnorm(x),add=T) # 添加曲线 h - hist(x, plot=F) # 绘制直方图 ylim - range(0, h$density, dnorm(0) #设定纵轴的取值范围 hist(x, freq=F, ylim=ylim) #绘制直方图 curve(dnorm(x),add=T,col=“red“) #添加曲线,10,图27 在原有直方图上添加曲线,11,五 编写函数,12,编程基础,R可以灵活的编写程序,用户自己编写的程序可以直接调用。编程时无需声明变量的类型,这与C,C+等语言不同。 基本格式
5、函数名 - function(数据,参数1= 默认值,) 异常处理;表达式(循环/判别);return(返回值); 函数内部也可用#添加注释,13,函数实例,图28 函数实例 data2mat(),14,程序流程控制 if,if(条件) 表达式 if(条件) 表达式1 else 表达式2 举例 p = 0.03 if(p 0.05!“) ,15,循环 for, while,for(变量 in 向量) 表达式 用法: for(i in 1:10) print(i) while(条件) 表达式 用法: i - 1 while(i10) print(i); i - i + 1,16,返回值,返回值表
6、示函数输出的结果。 返回值必须是一个对象。 R默认将最后一行作为返回值。 如果函数的结果需要有多个返回值,可以创建一个list(),并返回该对象。 也可以用return()函数,设定返回值。 但是一个函数的返回的对象只有一个。,17,异常处理,如数据输入不能满足要求,或者参数设定错误等等,可能造成函数给出错误的结果,则需要对函数的运行过程发出警告或终止,以提高程序的稳健性。 警告的写法 if(any(is.na(inputdata) inputdata - na.omit(inputdata) cat(“NAs are found in the input data, and has been removed.n“) 终止的写法 if(any(is.na(xx) stop(“NAs are not allowed!n“),18,函数举例,问题:输入直角三角形的两个边长,求其斜边长。 定义函数: rcal - function(x,y)z - x2 + y2 result - sqrt(z)return(result) 调用函数: rcal(3,4),19,