R语言之plot绘图函数的使用&abline、lines函数当前图中添加一条直线
R有强大的绘图功能,plot()函数是一种常用的绘图函数,用其可以绘制散点图、曲线图等。
plot函数的语法格式
R语言中plot()函数的基本格式如下:
plot(x,y,...)
plot函数中,x和y分别表示所绘图形的横坐标和纵坐标;函数中的...为附加的参数。
plot函数默认的使用格式如下:
plot(x, y = NULL, type = "p", xlim = NULL, ylim = NULL, log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, asp = NA, ...)
主要参数的含义如下:
(1)type为一个字符的字符串,用于给定绘图的类型,可选的值如下:
"p":绘点(默认值);
"l":绘制线;
"b":同时绘制点和线;
"c":仅绘制参数"b"所示的线;
"o":同时绘制点和线,且线穿过点;
"h":绘制出点到横坐标轴的垂直线;
"s":绘制出阶梯图(先横后纵);
"S":绘制出阶梯图(先纵后竖);
"n":作空图。
(2)main参数 字符串,给出图形的标题;
(3)sub参数 字符串,给出图形的子标题;
(4)xlab 和 ylab参数 字符串,用于给出x轴和y轴的标签。
(5)xlim 和 ylim参数 都是二维向量,分别表示x轴和y轴的取值范围。
绘图的例子
(1)绘制简单的一个点
plot(10,10) #直接给出数据
结果如下图:
也可以使用标量的形式给出绘点的坐标:
#使用变量的情况x<-10y<-10plot(x,y)
绘图结果如下:
也可以同时绘制多个点,多个点的横坐标和纵坐标分别由参数x和y以向量的形式传递
#绘制多个点:本处两个点x<-c(20,30)y<-c(40,50)plot(x,y)
结果如下:
(2)使用参数l(注意这里不是数字1是小写的L)绘制一条直线
x<-c(20,30)y<-c(40,50)plot(x,y,'l')
结果如下:
(3)使用参数b:同时绘制点和线,线不穿过点
plot(x, y, 'b')
结果如下:
(4)使用参数c:仅绘制出参数为b时所示的直线
plot(x, y, "c")
结果如下图所示:
(5)使用main参数、xlab,ylab的情形
plot(x, y, "l",main="plot函数绘图演示",xlab="x值",ylab="y值")
结果形式如下:
(6)xlim、ylim参数的使用
plot(x,y,xlim=c(10,50),ylim=c(10,50))
结果形式如下:
即x轴的坐标范围为10~50,y轴的坐标范围为:10~50
注:以上没有给x和y赋值时,默认使用前面x和y的值。
在R语言中,使用abline()函数可以在当前绘图中添加一条或多条直线。
在绘图中可以设置的参数一般包括:直线的截距(a),直线的斜率(b),水平线的纵轴取值(h)、垂直线的横轴取值(v)等。
abline()函数的使用格式为:
abline(a = NULL, b = NULL, h = NULL, v = NULL,
reg = NULL, coef = NULL, untf = FALSE, ...)
各参数的含义为:
(1)a 要绘制的直线截距
(2)b 直线的斜率
(3)h 会水平线时的纵轴值
(4)v 画垂直线时的横轴值
(5)reg 是一个具有coef方法的回归对象名称。若该对象返回的向量长度为1,则该值会作为该该函数的斜率,否则前两个值将会分别作为所绘直线的截距和斜率。
(6)coef 一个二维向量,给出截距和斜率
(7)untf 逻辑值,如果UNTF为真,且坐标轴中的一个或两个进行了对数变换,则会绘制对应于原始坐标系中的直线的曲线,否则在变换坐标系中绘制线。
abline()函数典型的用法主要有以下几种:
(1)abline(a, b, untf = FALSE, ...)
(2)abline(h =, untf = FALSE, ...)
(3)abline(v =, untf = FALSE, ...)
(4)abline(coef =, untf = FALSE, ...)
(5)abline(reg =, untf = FALSE, ...)
附加参数还可以给出线型、线条颜色,线条宽度等等。
下面举几个例子:
## 首先使用plot函数绘制一个空图,并设置坐标系的纵坐标与横坐标的比例为1:
plot(c(-2, 3), c(-1,5), type = "n", xlab = "x", ylab = "y", asp = 1)
## 绘制一条水平线和垂直线,并指定颜色
abline(h = 0, v = 0, col = "gray60")
如下图所示:
# 为图添加网格线或参考线
abline(h = -1:5, v = -2:3, col = "lightgray", lty = 3)
结果如下图所示:
#绘制一条斜线
#如绘制y = 2x + 1
#即绘制斜率为2,截距为1的直线
abline(a = 1, b = 2, col = "red") #这里指定直线颜色为红色
结果如下图中红色直线所示:
在回归方程中可以添加趋势线
#在散点图中绘制趋势线
#(数据含义见:使用R语言绘制散点图)
x <- c(2,5,1,3,4,1,5,3,4,2)
y <- c(50, 57, 41, 54, 54, 38, 63, 48, 59, 46)
reg <- lm(y~x)
plot(x, y, xlab = "广告次数", ylab = "销售额(100美元)")
abline(reg, col = "blue")
结果见下图
abline函数主要在当前图中添加一条直线,该直线可以通过给定截距和斜率,或者垂直于横轴或纵轴的向量,或者是回归对象等。
lines()函数也是一个低水平绘图函数。它主要是在当前绘图中通过线段依次将点连接起来。
其语法格式为:
lines(x, ...)
默认格式为:
lines(x, y = NULL, type = "l", ...)
x, y是数值向量,表示点的坐标。
type字符串,表示绘图类型。默认为划线。
...为附加参数,如线型,线的颜色等等。
下面举例说明,本例统计了一周当中,工作日和非工作日下午1点到8点的网站访问情况,绘制图查看趋势。
编写R程序如下:
t <- rep(1:8) #向量t表示时间1~8点
#v1为非工作日时网站在1~8点时的平均访问量
v1 <- c(245,356,210,189,345,234,191,452)
#v2工作日时网站在1~8点时的平均访问量
v2 <- c(345,451,541,548,600,720,650,560)
#使用plot绘制一个空图,lines函数必须是在已有图形上绘制
plot(c(1,8), c(100, 750), type = "n", xlab = "时间", ylab = "访问次数")
#使用abline函数添加网格线
abline(h = seq(100, 750, by = 20),v = 0:8, col = "lightgray", lty = 3)
#绘制折线,分别用红色和蓝色加以区分
lines(t, v1, col = "red")
lines(t, v2, col = "blue")
绘图结果如下图所示: