vlambda博客
学习文章列表

学术专栏 | R语言基础绘图




R语言基础绘图

这是一期不怎么严谨的CSDN搬运专栏,主要介绍如何用R绘制基本统计图形

创建图形

图形的核心:plot()函数

plot()函数是R语言创建图形最基本的函数,plot()是一个泛型函数,真正被调用的函数依赖于对象所属的类

plot函数最基本的参数x,y,分别表示横纵坐标的取值向量 参数main指定标题,sub指定副标题,xlab和ylab分别指定x轴和y轴标签学术专栏 | R语言基础绘图

abline()函数和lines()函数

abline()函数可以用于向图中添加线条

例如:在当前图形中添加y=2+1*x描述的直线

abline(c(2,1))
学术专栏 | R语言基础绘图

abline()在编写时特意考虑了参数是回归结果的情形,因此如果参数是回归结果的对象,那么这个函数就会从lmout$coefficients中提取斜率和截距,然后画出这条直线

library("wooldridge")library("car")library("lmtest")data(wage1)lmout=lm(wage1$lwage~wage1$educ)plot(wage1$educ,wage1$lwage,cex=0.1)abline(lmout)
学术专栏 | R语言基础绘图

lines()函数同样用于向图中添加直线,尽管lines()有很多的参数,但是有两个最基本的参数,分别表示x轴的取值向量和y轴的取值向量.两个参数联合起来表示向当前图形添加的点对(x,y),并在之后依次用线条把它们连接起来

如果你只想画出线条,而不想将其中的连接点绘制出来,可以将参数type="1"添加到lines()或plot()中

还可以用plot()中的参数lty来指定线条类型,如指定实线还是虚线

points()函数

points()函数可以向现有的图形中添加一系列的点对(x,y),每个点都用一种图形元素来表现

例如:向当前图中添加Exam1和Exam2成绩的散点图,其中每一个点都用"+"来标记

points(testscore$Exam1,testscor$Exam3,pch="+")

legend()函数

legend()函数用于向拥有多条曲线的图中添加图例

text()函数

利用text()函数可以在图形的任意位置加上一些文字

text(2.5,4,"abc")
学术专栏 | R语言基础绘图

这将在图形中点(2.5,4)的位置加上文字"abc",字符串的中心,将正好位于(2.5,4)

locator()函数

调用locator()函数,然后在图形中需要的位置点击鼠标,这个函数就会返回你点中之处的坐标.利用locator()函数,可以将文字精确放在你想要的位置. 下面这个命令将会告诉R,你会在图中点击二次.

locator(2)

下面是一个简单的例子:点击之后,函数会返回一个列表,其元素x,y分别表示所点位置的横纵坐标

hist(c(12,5,13,25,16))locator(2)

$x

[1] 12.06204 17.31315

$y

[1] 1.998410 1.032207

改变图形

改变字符大小:cex

cex选项用于放大或缩小图形中的字符,在许多绘图函数中,你都可以将它作为一个参数代入其中. 例如:输入以下命令可以实现对"abc"字符的放大输出

text(2.5,4,"abc",cex=1.5)

改变坐标轴的范围:xlim和ylim选项

你可能希望x轴或y轴的范围比默认情况更大或更小,要做到这一点,你可以在plot()和points()函数中指定xlim和ylim参数来对坐标轴调整.

如果你要绘制多条曲线,又没有指定xlim或ylim,那么就应该首先绘制最高最宽的那条.否则R只会根据第一条曲线绘制图形,然后将最高的那些在顶部截断

平滑散点:lowess()

可以用lowess()对散点拟合一条平滑的非参数回归线

例如:可以实现考试成绩之间的平滑

plot(testscores)lines(lowess(testscores))
学术专栏 | R语言基础绘图

绘制具有显式表达式的函数

如果你想绘制函数g(t)=t+1在0到5之间的图像,可以利用curve()函数

curve(x+1,0,5)
学术专栏 | R语言基础绘图

如果想向图中添加这条曲线,则可以使用add参数:add="T"

function(x)

同样,如果想绘制函数在某区间上的图像,也可以用function(x)说明对函数画图 例如想画pnorm函数在(-3,3)的图像

plot(function(x) pnorm(x,lower.tail=F), -3, 3)


供稿 | 学术部
排版 | 新媒体中心