R语言绘图篇

转载自:http://blog.csdn.net/lilanfeng1991/article/details/34431865

1.散点图

[plain] view plaincopy
  1. library(base)  
  2. attach(mtcars)  
  3. plot(mtcars$wt,mtcars$mpg,  
  4.      main="Basic Scatter plot of MPG vs.Weight",  
  5.      xlab="Car Weight(lbs/100)",  
  6.      ylab="Miles Per Gallon",  
  7.      pch=19)  
  8. abline(lm(mtcars$mpg~mtcars$wt),col="red",lwd=2,lty=1)  
  9. lines(lowess(mtcars$wt,mtcars$mpg),col="blue",lwd=2,lty=2)  
  10. #lowess()函数用来添加一条平滑曲线,lowess()和loess(),loess是基于lowess()表达式版本的更新和更强大拟合函数  
R语言绘图篇_第1张图片

car中的scatterplot()函数可方便地绘制散点图,并添加拟合曲线、边界箱线图和置信椭圆,还可按子集绘图和交互式地识别点。

[plain] view plaincopy
  1. library(car)  
  2. scatterplot(mpg~wt|cyl,data=mtcars,lwd=2,  
  3.             main="Scatter Plot of MPG vs.Weight by # Cylinders",  
  4.             xlab="Weight of Car(lbs/1000)",  
  5.             ylab="Miles Per Gallon",  
  6.             legend.plot=TRUE,  
  7.             id.method="identify",  
  8.             labels=row.names(mtcars),  
  9.             boxplots="xy")  
R语言绘图篇_第2张图片

2.散点图矩阵

(1)pairs()函数可创建基础的散点图矩阵

[plain] view plaincopy
  1. pairs(~mpg+disp+drat+wt,data=mtcars,main="Basic Scatter Plot Matrix")  
R语言绘图篇_第3张图片

[plain] view plaincopy
  1. pairs(~mpg+disp+drat+wt,data=mtcars,main="Basic Scatter Plot Matrix",upper.panel=NULL)  


(2)car包中的scatterplotMatrix()函数也可生成散点图矩阵

scatterplotMatrix()函数创建的散点图矩阵,主对角线上有核密度曲线和轴须图,其余图形都含有线性和平滑拟合曲线

可进行如下操作:
以某个因子为条件绘制散点图矩阵;
包含线性和平滑拟合曲线;
在主对角线放置箱线图、密度图或者直方图;
在各单元格的边界添加轴须图。

[plain] view plaincopy
  1. library(car)  
  2. scatterplotMatrix(~mpg+disp+drat+wt,data=mtcars,spread=FALSE,lty.smooth=2,main="Scatter Plot Matrix via car Packages")  


[plain] view plaincopy
  1. library(car)  
  2. scatterplotMatrix(~mpg+disp+drat+wt|cyl,data=mtcars,spread=FALSE,diagonal="histogram",main="Scatter Plot Matrix via car Package")  

(3)gclus包中的cpairs()函数

提供一个有趣的散点图矩阵变种,含有可能重排矩阵中变量位置的选项,可让相关性更高的变量更靠近主对角线,还可对各单元格进行颜色编码来展示变量间的相关性大小。

[plain] view plaincopy
  1. install.packages("gclus")  
  2. library(gclus)  
  3. mydata<-mtcars[c(1,3,5,6)]  
  4. mydata.corr<-abs  
  5. mycolors<-dmat.color(mydata.corr)  
  6. myorder<-order.single(mydata.corr)  
  7. cpairs(mydata,myorder,panel.colors=mycolors,gap=5,main="Variable Ordered and Colored by Correlation")  
R语言绘图篇_第4张图片


由结果可知,相关性最高的变量是车重与排量,以及每加仑英里数与车重(标为红色,且离主对角线最近);

相关性最低的是后轴比与每加仑英里数(标注为黄色,且离主对角线很远)。

3.高密度散点图

[plain] view plaincopy
  1. set.seed(1234)  
  2. n<-10000  
  3. c1<-matrix(rnorm(n,mean=0,sd=.5),ncol=2)  
  4. c2<-matrix(rnorm(n,mean=3,sd=2),ncol=2)  
  5. mydata<-rbind(c1,c2)  
  6. mydata<-as.data.frame(mydata)  
  7. names(mydata)<-c("x","y")  
  8. with(mydata,plot(x,y,pch=19,main="Scatter Plot with 10,000 observation"))  
R语言绘图篇_第5张图片

[plain] view plaincopy
  1. with(mydata,smoothScatter(x,y,main="Scatterplot Colored by Smoothed Densities"))  

hexbin包中的hexbin()函数将二元变量的封箱放到六边形单元格中

[plain] view plaincopy
  1. install.packages("hexbin")  
  2. library(hexbin)  
  3. with(mydata,{bin<-hexbin(x,y,xbins=50)  
  4.              plot(bin,main="Hexagonal Binning with 10,000 Observations")})  

R语言绘图篇_第6张图片


IDPmisc包中的iplot()函数可通过颜色来展示点的密度(在某特定点上数据点的数目)

[plain] view plaincopy
  1. with(mydata,iplot(x,y,main="Image Scatter Plot with Color Indicating Density"))  


R语言绘图篇_第7张图片

4.三维散点图

对三个变量的交互关系进行可视化  可用scatterplot3d中的scatterplot3d()函数来绘制它们的关系

[plain] view plaincopy
  1. install.packages("scatterplot3d")  
  2. library(scatterplot3d)  
  3. attach(mtcars)  
  4. scatterplot3d(mtcars$wt,mtcars$disp,mtcars$mpg,  
  5.               main="Basic 3D Scatter Plot")  
R语言绘图篇_第8张图片

[plain] view plaincopy
  1. library(scatterplot3d)  
  2. attach(mtcars)  
  3. scatterplot3d(mtcars$wt,mtcars$disp,mtcars$mpg,  
  4.               pch=16,  
  5.               highlight.3d=TRUE,  
  6.               type="h",  
  7.               main="Basic 3D Scatter Plot")  
R语言绘图篇_第9张图片

[plain] view plaincopy
  1. s3d<-scatterplot3d(mtcars$wt,mtcars$disp,mtcars$mpg,  
  2.               pch=16,  
  3.               highlight.3d=TRUE,  
  4.               type="h",  
  5.               main="Basic 3D Scatter Plot")  
  6. fit<-lm(mtcars$mpg~mtcars$wt+mtcars$disp)  
  7. s3d$plane3d(fit)  
R语言绘图篇_第10张图片
旋转三维散点图

rgl包中的plot3d()函数创建可交互的三维散点图

[plain] view plaincopy
  1. install.packages("rgl")  
  2. library(rgl)  
  3. attach(mtcars)  
  4. plot3d(mtcars$wt,mtcars$disp,mtcars$mpg,col="red",size=5)  
R语言绘图篇_第11张图片

可通过鼠标旋转坐标轴


[plain] view plaincopy
  1. install.packages("Rcmdr")  
  2. library(Rcmdr)  
  3. attach(mtcars)  
  4. scatter3d(mtcars$wt,mtcars$disp,mtcars$mpg)  
scatter3d()函数可包含各种回归曲面,比如线性、二次、平滑和附加等类型。

5.气泡图

思想:创建一个二维散点图,然后用点的大小来代表第三个变量的值。

可用symbols()函数来创建气泡图

[plain] view plaincopy
  1. attach(mtcars)  
  2. r<-sqrt(disp/pi)  
  3. symbols(mtcars$wt,mtcars$mpg,circler=r,inches=0.30,  
  4.         fg="white",bg="lightblue",  
  5.         main="Bubble Plot with point size proportional to displacement",  
  6.         xlab="Weigt of Car(lbs/1000)",ylab="Miles Per Gallon")  
  7. text(wt,mpg,rownames(mtcars),cex=0.6)  
  8. detach(mtcars)  

6.折线图

刻画变动的优秀工具

创建散点图和折线图
[plain] view plaincopy
  1. opar<-par(no.readonly=TRUE)  
  2. par(mfrow=c(1,2))  
  3. t1<-subset(Orange,Tree==1)  
  4. plot(t1$age,t1$circumstance,  
  5.      xlab="Age(days)",  
  6.      ylab="Circmference(mm)",  
  7.      main="Orange Tree 1 Growth")  
  8. plot(t1$age,t1$circumstance,  
  9.      xlab="Age(days)",  
  10.      ylab="Circmference(mm)",  
  11.      main="Orange Tree 1 Growth",  
  12.      type="b")  

R语言绘图篇_第12张图片
拆线图类型
类型 图形外形
p 只有点
l 只有线
o 实心点和线(即线覆盖在点上)
b、c 线连接点(c时不绘制点)
s、S 阶梯线
h 直方图式的垂直线
n 不生成任何点和线(通常用来为后面的命令创建坐标)

plot()和lines()函数工作原理不同,plot()被调用时即创建一幅新图,而lines()函数则是在已存在的图形上添加信息,并不能自己生成图形。
[plain] view plaincopy
  1. Orange$Tree<-as.numeric(Orange$Tree)  
  2. ntrees<-max(Orange$Tree)  
  3. xrange<-range(Orange$age)  
  4. yrange<-range(Orange$circumference)  
  5.   
  6. plot(xrange,yrange,  
  7.      type="n",  
  8.      xlab="Age(days)",  
  9.      ylab="Circumstance(mm)")  
  10. colors<-rainbow(ntrees)  
  11. linetype<-c(1:ntrees)  
  12. plotchar<-seq(18,18+ntrees,1)  
  13. for(i in 1:ntrees){  
  14.   tree<-subset(Orange,Tree==i)  
  15.   lines(tree$age,tree$circumference,  
  16.         type="b",  
  17.         lwd=2,  
  18.         lty=linetype[i],  
  19.         col=colors[i],  
  20.         pch=plotchar[i]  
  21.     )  
  22. }  
  23. title("Tree Growth","example of line plot")  
  24. legend(xrange[1],yrange[2],  
  25.        1:ntrees,  
  26.        cex=.8,  
  27.        col=colors,  
  28.        pch=plotchar,  
  29.        lty=linetype,  
  30.        title="Tree")  


7.相关图

[plain] view plaincopy
  1. install.packages("seriation")  
  2. library(corrgram)  
  3. corrgram(mtcars,ordr=TRUE,lower.panel=panel.shade,  
  4.          upper.panel=panel.pie,text.panel=panel.txt,  
  5.          main="Correlogram of mtcars intercorrelations")  
R语言绘图篇_第13张图片

默认地,蓝色和和从左下指向右上的斜杠表示单元格中的两个变量呈正相关;反过来,绝色和从左上指向右下的斜杠表示变量呈负相关。色彩越深,饱和度越高,说明变量相关性越大。

上三角单元格用饼图显示了相同的信息,颜色同上,但相关性大小由被填充的饼图块的大小来展示。正相关从12点钟处开始顺时针填充饼图,而负相关则是逆时针方向填充饼图。


corrgram()函数的panel选项

位置 面板选项 描述
非对角线 panel.pie 用饼图的填充比例来表示相关性大小 

panel.shade 用阴影的深度来表示相关性的大小

panel.ellipse 绘制置信椭圆和平滑拟合曲线

panel.pts 绘制散点图
主对角线 panel.minmax 输出变量的最大最小值

panel.txt 变量的名字

[plain] view plaincopy
  1. corrgram(mtcars,ordr=TRUE,lower.panel=panel.shade,  
  2.          upper.panel=NULL,text.panel=panel.txt,  
  3.          main="Correlogram of mtcars intercorrelations")  


8.马赛克图

·当变量是类别变量时,且数目多于三个的时候,可使用马赛克图。马赛克图中,嵌套矩阵面积正比于单元格频率,其中该频率即多维列联表中的频率。颜色和阴影可表示拟合模型的残差值。

vcd包中的mosaic()函数可以绘制马赛克图

base包中的mosaicplot()也可绘制马赛克图。

以 base中的Titanic数据集为例

[plain] view plaincopy
  1. ftable(Titanic)  
  2. library(vcd)  
  3. mosaic(Titanic,shade=TRUE,legend=TRUE)  


































你可能感兴趣的:(R语言绘图篇)