中级绘图--折线图


折线图

如果将散点图上的点从左往右连接起来,就会得到一个折线图,以基础安装中的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=)

xy是要连接的(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)       #设置从1ntrees总共几种不通过的线形

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 4Tree 5在整个时间段中一直保持着最快的生长速度,而且Tree 5在大约664天的时候超过了Tree 4


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM