在图形初阶中,我们学习了散点图、条形图、直方图、核密度图、箱线图和小提琴图。大家通过学习,想必对这些图形的绘制有了初步的了解。或许有许多的朋友觉得初阶的学习太简单,哈哈,挑战来啦,一起进入中级绘图吧!
此次我们先学习散点图,首先利用R软件自带的mtcars数据来绘制添加了最佳拟合曲线的散点图吧。
代码如下:
#载入mtcars数据
attach(mtcars) plot(wt,mpg,main="Basic Scatter plot of MPG vs. Weight",xlab="Car Weight (lbs/1000)",ylab="Miles Per Gallon",pch=19)
#添加线性拟合直线
abline(lm(mpg~wt),col="red",lwd=2,lty=1)
#添加lowess拟合曲线
lines(lowess(wt,mpg),col="blue",lwd=2,lty=2)
下图就是汽车英里数对车重的散点图,只不过它里面添加了线性拟合直线和lowess拟合曲线。
是不是不难?来,看一个有难度的。
install.packages("car") library(car) attach(mtcars) scatterplot(mpg~wt|cyl,data=mtcars,lwd=2,span=0.75, main="Scatter Plot of MPG vs. Weight by # Cylinders", xlab="Weight of Car (lbs/1000)", ylab="Miles Per Gallon", legend.plot=TRUE, id.method="identify", boxplots="xy")
是不是感觉很迷茫,小编告诉你,我们用了scatterplot()函数,表达式mpg~wt|cyl表示按cyl的水平分别绘制mpg和wt的关系图。legend.plot=TRUE表明在左上边界添加图例,看看它的真面目吧。
是不是比较简单呢?下面我们来看散点图矩阵。先看一个例子。
是不是没有让你失望呢?我们一起来看看怎么做吧。
pairs(~mpg+disp+drat+wt,data=mtcars,main="Basic Scatter Plot Matrix",upper.panel=NULL)
注意,这里~的右边指的是自变量,就是四个变量,~的左边是因变量哟,只不过这个例子里不需要因变量。我们还可以用car包中的scatterplotMatrix()函数来生成散点图矩阵。下面我们再加深一点难度。
install.packages("car") library(car) scatterplotMatrix(~mpg+disp+drat+wt,data=mtcars,spread=FALSE,smoother.args=list(lty=2),main="Scatter Plot Matrix via car Package")
先看一下效果
小编没有让你们失望吧,解释如下:spread=FALSE选项表示不添加展示分散度和对称信息的直线,smoother.args=list(lty=2)设定平滑(loess)拟合曲线使用虚线而不是实线。
最后我们再来介绍一种三维散点图。假使你对汽车英里数、车重和排量间的关系感兴趣,可以用scatterplot3d包里的scatterplot3d()函数来实现。
install.packages("scatterplot3d") library(scatterplot3d) attcah(mtcars) scatterplot3d(wt,disp,mpg,pch=16,highlight.3d=TRUE,type="h",main="3D Scatter Plot with Vertical Lines")
我们对图形添加了符号、轴、颜色、线条、网格线等,那怎么添加一个回归面呢?
s3d<-scatterplot3d(wt,disp,mpg,pch=16,highlight.3d=TRUE,type="h",main="3D Scatter Plot with Vertical Lines and Regression Plane") fit<-lm(mpg~wt+disp) s3d$plane3d(fit)
来看看图形是什么样的。
是不是学起来不难?今天的散点图学习就到这儿啦,下次小编将和你一起学习折线图,大家准时相约哟!