中级绘图--折线图
折线图
如果将散点图上的点从左往右连接起来,就会得到一个折线图,以基础安装中的Orange数据集为例,它包含五种橘树的树龄和年轮数据,现要考察第一种橘树的生长情况:
opar <- par(no.readonly=TRUE) #设置初始化参数 par(mfrow=c(1,2)) #把画布分成2部分 t1 <- subset(Orange, Tree==1) #加载数据集,考察第一种橘树的生长情况 plot(t1$age, t1$circumference, xlab="Age (days)", ylab="Circumference (mm)", main="Orange Tree 1 Growth") #画出树的年龄和生长周长的散点图 plot(t1$age, t1$circumference, xlab="Age (days)", ylab="Circumference (mm)",main="Orange Tree 1 Growth", type="b") #画出树的年龄和生长周长的折线图 par(opar) #还原画布设置
折线图一般可用下列两个函数之一来创建:
plot(x, y, type=) lines(x, y, type=)
x和y是要连接的(x, y)点的数值型向量。
下图是折线的类型:
上图显示了plot()和lines()函数中的type参数值在绘图中的具体表现,值得注意的是plot()和lines()函数工作原理并不相同,plot()函数是在被调用时创建一幅新图,而lines()函数则是在已存在的图形上添加信息,并不能自己生成图形。
例子:我们可以先通过plot()函数中的type="n"选项来创建坐标轴、标题和其他图形特征,然后再使用lines()函数添加各种需要绘制的曲线。我们以绘制五种橘树随时间推移的生长状况为例,逐步展示一个更复杂折线图的创建过程。每种树都有自己独有的线条。代码如下:
Orange$Tree <- as.numeric(Orange$Tree) #把变量Orange$Tree设置为数值型 ntrees <- max(Orange$Tree) #取出树的类型有多少种 xrange <- range(Orange$age) #range 返回一个包含所有给定参数的最小值和最大值的向量。 yrange <- range(Orange$circumference) plot(xrange, yrange, #绘制散点图的两个参数 type="n", # type="n"选项来创建坐标轴 xlab="Age (days)", #设置x轴的名称 ylab="Circumference (mm)" #设置y轴的名称 ) colors <- rainbow(ntrees) #设置每种树不同的颜色 linetype <- c(1:ntrees) #设置从1到ntrees总共几种不通过的线形 plotchar <- seq(18, 18+ntrees, 1) #设置线条中图标不同的类型,圆形、方形等 for (i in 1:ntrees) { #设置i的取值范围 tree <- subset(Orange, Tree==i) #取出每一个子树 lines(tree$age, tree$circumference, #在原来散点图的基础上添加信息 type="b", #设置线形为点线 lwd=2, #lwd是设置线条的宽度(粗细) lty=linetype[i], # lty设置线条类型,比如i=2意思是绘制虚线 col=colors[i], # col设置线条的颜色 pch=plotchar[i] #pch设置线条中图标不同的形状,比如pch=17是三角标识 ) } title("Tree Growth", "example of line plot") #设置主标题和副标题 legend(xrange[1], yrange[2], #绘制图例,xrange[1], yrange[2]用来定位图例的x轴和y轴坐标 1:ntrees, #设置绘制线条的数目 cex=0.8, #设置图例中字体的大小 col=colors, #指定图例中线条的颜色 pch=plotchar, #指定图例线形中不同的图标 lty=linetype, #指定图例的线形 title="Tree" #指定图列的标题 )
结果分析:plot()函数先用来创建空图形,只设定了轴标签和轴范围,并没有绘制任何数据点,每种橘树独有的折线和点都是随后通过lines()函数来添加的。可以看到,Tree 4和Tree 5在整个时间段中一直保持着最快的生长速度,而且Tree 5在大约664天的时候超过了Tree 4。
本文来自博客园,作者:zhang-X,转载请注明原文链接:https://www.cnblogs.com/YY-zhang/p/15124569.html