学术专栏 | R语言基础绘图
R语言基础绘图
这是一期不怎么严谨的CSDN搬运专栏,主要介绍如何用R绘制基本统计图形
创建图形
图形的核心:plot()函数
plot()函数是R语言创建图形最基本的函数,plot()是一个泛型函数,真正被调用的函数依赖于对象所属的类
plot函数最基本的参数x,y,分别表示横纵坐标的取值向量 参数main指定标题,sub指定副标题,xlab和ylab分别指定x轴和y轴标签
abline()函数和lines()函数
abline()函数可以用于向图中添加线条
例如:在当前图形中添加y=2+1*x描述的直线
abline(c(2,1))
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)
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")
这将在图形中点(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))
绘制具有显式表达式的函数
如果你想绘制函数g(t)=t+1在0到5之间的图像,可以利用curve()函数
curve(x+1,0,5)
如果想向图中添加这条曲线,则可以使用add参数:add="T"
function(x)
同样,如果想绘制函数在某区间上的图像,也可以用function(x)说明对函数画图 例如想画pnorm函数在(-3,3)的图像
plot(function(x) pnorm(x,lower.tail=F), -3, 3)