上一篇里我大概写了R语言的简单作图元素,这里我们开始使用一些稍微高级的绘图函数,这些函数主要用来做各种统计图,比如箱线图,条形图,散点图等等……这些图再几百年前就开始使用,至今依然是学术界最为流行的图。或许它们相比于现在那些最酷的做图工具来说不够炫目,但是这些图依然是最容易让你看懂,也是最容易让你一行代码写出来的做图函数。
散点图
简而言之就是再图上画出一个一个的点,这是科研领域最常用也是最耐用的图,作图的时候,你必须知道横纵坐标分别是什么然后把点绘制出来。
> plot(sample(1:10),sample(1:10),main="散点图")
上图中,plot里有两个vector参数,前一个代表横坐标,后一个代表纵坐标。
线图
线图的代码其实和之前的散点图非常非常像:
> plot(sample(1:10),type = "l",main="线图")
这样就做出了线图,要注意的是,这里的线图是把每一个节点连接起来的。所以这与你vector里的点的顺序有关系了,做散点图,前后两个点顺序相反没关系,但是做线图,如果你把点的位置弄反了,绘制出来的线条会非常乱。所以,绘制线图的时候,一定要根据x坐标将所有点进行排序。
有时候我们想要绘制连贯的曲线,这个可不容易,因为这需要做拟合,所谓拟合就是绘制一条大致趋近你的曲线的线,但是那条线更为圆滑,这需要使用loess函数:
> x <- 1:10
> y <- c(2,4,6,8,7,12,14,16,18,20)
> lo <- loess(y~x)
> plot(x,y)
> lines(predict(lo), col='red', lwd=2)
再上面loess
函数完成了y因变量伴随着x自变量发生变化的拟合曲线,predict(lo)
函数的意思就是,提取出这个模型中根据每一个对应的x至拟合出来的y值。然后我们将其plot出来。
箱线图
boxplot在之前我们介绍异常值的时候介绍过,它的优点是可以很快让人看到中位数,上下四分位点等数值,缺点是只有box,看不到细部的数据细节,所以有时候,100个点和10000个点做出来的boxplot很类似很类似。所以看到boxplot,要小心的时候,除了总体的描述统计量,细节数据有没有直接关注的地方。
在这里我们展示一种更为特殊的boxplot:
boxplot(len~supp*dose, data=ToothGrowth, notch=TRUE,
col=(c("gold","darkgreen")),
main="Tooth Growth", xlab="Suppliment and Dose")