第十一章中级绘图

本章内容:

二元变量和多元变量关系的可视化

绘制散点图和折线图

理解相关图

学习马赛克图和关联图

本章用到的函数有:

plot

hexbin

ablines

iplot

scatterplot

scatterplot3d

pairs

plot3d

scatterplotMatrix

scatter3d

cpairs

symbols

smoothScatter

 

11.1散点图

添加了最佳拟合曲线的散点图

> attach(mtcars)
> plot(wt,mpg,main="Basic Scatter plot of MPGvs.weight",xlab="car weight (lbs/1000",ylab="miles pergallon",pch=19)
>abline(lm(mpg~wt),col="red",lwd=2,lty=1)#添加最佳拟合的线性直线
>lines(lowess(wt,mpg),col="blue",lwd=2,lty=2)#添加一条平滑曲线

  

car包中的scatterplot()函数增强了散点图的许多功能,它可以很方便地绘制散点图,并

能添加拟合曲线、边界箱线图和置信椭圆,还可以按子集绘图和交互式地识别点。

> library(car)
> scatterplot(mpg~wt|cyl,data=mtcars,lwd=2,
+ main="scatter plot of pmg \n vs. weight by #cylinders",
+ xlab="car weight (lbs/1000)",
+ ylab="miles per gallon",
+ legend.plot=TRUE,#左上边界添加图例
+ id.method="identify",
+ labels=row.names(mtcars),#可通过点的行名称来识别点
+ boxplots="xy")

11.1.1 散点图矩阵

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

> pairs(~mpg+disp+drat+wt,data=mtcars,
+ main="basic scatter plot matrix")

主对角线的上方和下方的六幅散点图是相同的,选项upper.panel =NULL将只生成下三角的图形。

car包中的scatterplotMatrix()函数也可以生成散点图矩阵,并有以下可选操作:

以某个因子为条件绘制散点图矩阵;

包含线性和平滑拟合曲线;

在主对角线放置箱线图、密度图或者直方图;

在各单元格的边界添加轴须图。

> library(car)
> scatterplotMatrix(~mpg+disp+drat+wt,data=mtcars,spread=FALSE,
+ lty.smooth=2,main="scatter plot matrix via car package")

  

线性和平滑(loess)拟合曲线被默认添加,主对角线处添加了核密度曲线和轴须图。spread = FALSE选项表示不添加展示分散度和对称信息的直线,lty.smooth =2设定平滑(loess)拟合曲线使用虚线而不是实线。

scatterplotMatrix()函数的另一个用法

> library(car)#主对角线的核密度曲线改成了直方图,并且直方图是以各车的气缸数为条件绘制的。
> scatterplotMatrix(~mpg+disp+drat+wt|cyl,data=mtcars,spread=FALSE,
+ diagonal="histogram",main="scatter plot matrix via carpackage")

  

主对角线的核密度曲线改成了直方图,并且直方图是以各车的气缸数为条件绘制的。图形包含主对角线中的直方图以及其他部分的线性和平滑拟合曲线。另外,子群(根据气缸数)通过符号类型和颜色来区分标注默认地,回归直线拟合整个样本,包含选项by.groups = TRUE将可依据各子集分别生成拟合曲线。

gclus包中的cpairs()函数提供了一个有趣的散点图矩阵变种。它含有可以重排矩阵中变量位置的选项,可以让相关性更高的变量更靠近主对角线。该函数还能对各单元格进行颜色编码来展示变量间的相关性大小。首先考察相关性:

>cor(mtcars[c("mpg","wt","disp","drat")])

mpg wt disp drat

mpg 1.0000000 -0.8676594-0.8475514 0.6811719

wt -0.8676594 1.0000000 0.8879799 -0.7124406

disp -0.8475514 0.8879799 1.0000000 -0.7102139

drat 0.6811719 -0.7124406-0.7102139 1.0000000

gclus包生成的散点图矩阵

> library(gclus)
> mydata<-mtcars[c(1,3,5,6)]
> mydata.corr<-abs(cor(mydata))#相关系数的绝对值
> mycolors<-dmat.color(mydata.corr)#获取绘图的颜色
> myorder<-order.single(mydata.corr)#重排对象,可使得相似的对象更为靠近
> cpairs(mydata, myorder,panel.colors=mycolors,gap=.5,main="variablesordered and colored by correlation")

散点图矩阵将根据新的变量顺序(myorder)和颜色列表(mycolors)绘图、上色,gap选项

使矩阵各单元格间的间距稍微增大一点。相关性最高的变量对是车重与排量,以及每加仑英里数与车重(标了红色,并且离主对角线最近)

11.1.2 高密度散点图

当数据点重叠很严重时,用散点图来观察变量关系就显得“力不从心”了。

> set.seed(1234)
> n<-10000
> c1<-matrix(rnorm(n,mean=0,sd=.5),ncol=2)
> c2<-matrix(rnorm(n,mean=3,sd=2),ncol=2)
> mydata<-rbind(c1,c2)
> mydata<-as.data.frame(mydata)
> names(mydata)<-c("x","y")
> with(mydata,plot(x,y,pch=19,main="scatter plot with 10000 observations"))

smoothScatter()函数可利用核密度估计生成用颜色密度来表示点分布的散点图,利用光平滑密度估计绘制的散点图。此处密度易读性更强:

> with(mydata, smoothScatter(x,y,main="scatter plot with 10000observations"))

hexbin包中的hexbin()函数将二元变量的封箱放到六边形单元格中(图形比名称更直观)

> library(hexbin)
> with(mydata,{bin<-hexbin(x,y,xbins=50)plot(bin,main="hexagonalbinning with \n 10000 boservations")})

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

数目)

> library(IDPmisc)
> with(mydata,{ iplot(x,y,main="imagescatter plot with\n color indicating density") })

11.1.3 三维散点图

假使你对汽车英里数、车重和排量间的关系感兴趣,可用scatterplot3d中的

scatterplot3d()函数来绘制它们的关系。Scatterplot3d(x,y,z) x被绘制在水平轴上,y被绘制在竖直轴上,z被绘制在透视轴上。

> library(scatterplot3d)
> attach(mtcars)
> scatterplot3d(wt,disp,mpg,main="basic 3d scatter plot")

注:如出现Error in plot.new() : figure margins too large 重启Rstudio即可

satterplot3d()函数提供了许多选项,包括设置图形符号、轴、颜色、线条、网格线、突

出显示和角度等功能

> scatterplot3d(wt,disp,mpg, pch=16,highlight.3d=TRUE,type="h",main="3dscatter plot with vertical lines")

添加一个回归面

> s3d<-scatterplot3d(wt,disp,mpg,pch=16, highlight.3d=TRUE, type="h", main="3dscatter plot with vertical lines")
> fit<-lm(mpg~wt+disp)
> s3d$plane3d(fit)

旋转三维散点图

用rgl包中的plot3d()函数创建可交互的三维散点图。你能通过鼠标对图形进

行旋转。函数格式为:plot3d(x,y,z)

其中x、y和z是数值型向量,代表着各个点。你还可以添加如col和size这类的选项来分别控制

点的颜色和大小。

> library(rgl)
> attach(mtcars)
> plot3d(wt,disp,mpg,col="red",size=5)

也可以使用Rcmdr包中类似的函数scatter3d():

> library(Rcmdr)
> attach(mtcars)
> scatter3d(wt,disp,mpg)

scatter3d()函数可包含各种回归曲面,比如线性、二次、平滑和附加等类型。图形默认添

加线性平面。另外,函数中还有可用于交互式识别点的选项。

11.1.4 气泡图

三维散点图来展示三个定量变量间的关系。现在介绍另外一种思路:先创建一个二维散点图,然后用点的大小来代表第三个变量的值。这便是气泡图(bubble plot)。

你可用symbols()函数来创建气泡图。该函数可以在指定的(x, y)坐标上绘制圆圈图、方形

图、星形图、温度计图和箱线图。以绘制圆圈图为例:

Symbols(x,y,circle=radius)

其中x、y和radius是需要设定的向量,分别表示x、y坐标和圆圈半径。

用面积而不是半径来表示第三个变量,那么按照圆圈半径的公式(r = A / π )变

换即可:Symbols(x,y,circle=sqrt(z/pi))z即第三个要绘制的变量。

> attach(mtcars)
> r<-sqrt(disp/pi)
> symbols(wt,mpg,circle=r,inches=.3,#比例因子,控制着圆圈大小(默认最大圆圈为1英寸)
+ fg="white",bg="lightblue", main="bubble plotwith point size\n proportional to displacement", ylab="miles pergallon", xlab="weight of car(lbs/1000")
> text(wt,mpg,rownames(mtcars),cex=.6)#可选函数,此处用来添加各个汽车的名称
> detach(mtcars)


求关注 求扩散亲朋好友

R in action读书笔记(14)第十一章 中级绘图 之一:散点图(高能预警)的更多相关文章

  1. R in action读书笔记(15)第十一章 中级绘图 之二 折线图 相关图 马赛克图

    第十一章 中级绘图 本节用到的函数有: plot legend corrgram mosaic 11.2折线图 如果将散点图上的点从左往右连接起来,那么就会得到一个折线图. 创建散点图和折线图: &g ...

  2. 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高

    第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...

  3. 《深入理解java虚拟机》读书笔记十——第十一章

    第十一章  晚期(运行期)优化 1.HotSpot虚拟机内的即时编译 解释器与编译器: 许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生 ...

  4. Android群英传》读书笔记 (3) 第六章 Android绘图机制与处理技巧 + 第七章 Android动画机制与使用技巧

    第六章 Android绘图机制与处理技巧 1.屏幕尺寸信息屏幕大小:屏幕对角线长度,单位“寸”:分辨率:手机屏幕像素点个数,例如720x1280分辨率:PPI(Pixels Per Inch):即DP ...

  5. R in action读书笔记(20)第十五章 处理缺失数据的高级方法

    处理缺失数据的高级方法 15.1 处理缺失值的步骤 一个完整的处理方法通常包含以下几个步骤: (1) 识别缺失数据: (2) 检查导致数据缺失的原因: (3) 删除包含缺失值的实例或用合理的数值代替( ...

  6. R in action读书笔记(19)第十四章 主成分和因子分析

    第十四章:主成分和因子分析 本章内容 主成分分析 探索性因子分析 其他潜变量模型 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.探索性因 ...

  7. R in action读书笔记(12)第九章 方差分析

    第九章方差分析 9.2 ANOVA 模型拟合 9.2.1 aov()函数 aov(formula, data = NULL, projections =FALSE, qr = TRUE, contra ...

  8. R in action读书笔记(5)-第七章:基本统计分析

    7.1描述性统计分析 > vars<-c("mpg","hp","wt") > head(mtcars[vars])    ...

  9. R in action读书笔记(22)第十六章 高级图形进阶(下)

    16.2.4 图形参数 在lattice图形中,lattice函数默认的图形参数包含在一个很大的列表对象中,你可通过trellis.par.get()函数来获取,并用trellis.par.set() ...

随机推荐

  1. 2016/05/16 UEditor 文本编辑器 使用教程与使用方法

    第一:百度UEditor编辑器的官方下载地址 ueditor 官方地址:http://ueditor.baidu.com/website/index.html 开发文档地址:http://uedito ...

  2. 安全相关的head头

    与安全相关的head头包括 参考网站:https://developer.mozilla.org/en-US/docs/Web/HTTP Content-Security-Policy(CSP):禁止 ...

  3. 普通用户无法登陆SSH问题

    Linux正常情况下普通用户是可以登陆SSH的,除非系统管理员作了修改,如果没有修改的情况无法登陆可以尝试以下方法解决: 步骤/方法 1 查看 /etc/ssh/sshd_config文件 发现 ro ...

  4. 关于数论【polya计数法】

    可以预见数论推公式是有多么蛋疼. 让我简明扼要的讲讲吧(多都说不出来,毕竟才做了两道题)其实呢,这个算法应该归入群论,有个有用的东西:置换群,它表示一个集合包括很多的置换.先讲讲置换吧:↓(这是个置换 ...

  5. eclipse svn修改用户名密码

    1,svn客户端删除 2,eclipse 补充,上图为网友资料,但实际操作过程中,发现eclipse中svn为svnkit,但相应目录下无.keyring文件,最后按步骤2删除auth下所有文件,再次 ...

  6. HDU - 1863 畅通工程(最小生成树)

    d.m个村庄,n条路,计算出所有村庄畅通需要的最低成本. s.最小生成树 c.Prim算法:cost[a][b]和cost[b][a]都得赋值. /* Prim算法 Prim求MST 耗费矩阵cost ...

  7. Splay基本操作

    我们以一道题来引入吧! 传送门 题目说的很清楚,我们的数据结构要支持:插入x数,删除x数,查询数的排名和排名为x的数,求一个数前驱后继. 似乎用啥现有的数据结构都很难做到在O(nlogn)的复杂度中把 ...

  8. Watir: 很久以前,对Watir开始学习时候做的笔记

    1). buttons Xpath 1)Button properties browser.button(:xpath,"//input[@id='b2']/").name bro ...

  9. gevent 协程 使用

    Python通过yield提供了对协程的基本支持,但是不完全.而第三方的gevent为Python提供了比较完善的协程支持. gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一 ...

  10. Linux网络协议栈(二)——套接字缓存(socket buffer)

    Linux网络核心数据结构是套接字缓存(socket buffer),简称skb.它代表一个要发送或处理的报文,并贯穿于整个协议栈.1.    套接字缓存skb由两部分组成:(1)    报文数据:它 ...