第十一章中级绘图

本章内容:

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

绘制散点图和折线图

理解相关图

学习马赛克图和关联图

本章用到的函数有:

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)

其中xyz是数值型向量,代表着各个点。你还可以添加如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)

其中xyradius是需要设定的向量,分别表示xy坐标和圆圈半径。

用面积而不是半径来表示第三个变量,那么按照圆圈半径的公式(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. 【iOS系列】-UIScrollView的介绍及结合UIPageControl实现图片播放的实例

    [iOS系列]-UIScrollView的介绍及结合UIPageControl实现图片播放的实例 第一:UIScrollView的常用属性 //表示UIScrollView内容的尺寸,滚动范围 @pr ...

  2. eclipse中经常使用快捷键

    熟练一些快捷键,会使你的开发更加快捷.高效,值得花些时间学一下! 1. ctrl+shift+r:打开资源 这可能是全部快捷键组合中最省时间的了.这组快捷键能够让你打开你的工作区中不论什么一个文件,而 ...

  3. 变量的命名和if语句

    1. 计算机是什么 基本组成: cpu: 主频, 核数(16) 内存:大小(8G, 16G, 32G) 型号: DDR3, DDR4, DDR5,  主频(海盗船,玩家国度) 显卡: 显存.型号(N- ...

  4. 判断一个包是否可以安装是一个NP-complete问题

    1 checking whether a single package P can be installed, given a repository R,is NP-complete

  5. rm -rf / – Deletes Everything!

    https://www.howtogeek.com/125157/8-deadly-commands-you-should-never-run-on-linux/

  6. os 2大功能

    支撑功能 中断管理 时钟管理 原语操作  primitive 资源管理功能 进程管理 存储器管理 设备管理

  7. HDU2121 Ice_cream’s world II —— 最小树形图 + 不定根 + 超级点

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2121 Ice_cream’s world II Time Limit: 3000/1000 MS (J ...

  8. Persisting Data to the Device

    Persisting Data to the Device Edit PagePage History Overview The Android framework offers several op ...

  9. bzoj 1504 郁闷的出纳员

    题目大意: 有一些员工 他们有工资 当他们的工资低于一个值时 他们会永远离开 I命令 I_k 新建一个工资档案,初始工资为k.                 如果某员工的初始工资低于工资下界,他将立 ...

  10. 通过minicom传送文件的相关配置及使用方法

    写一下我使用串口向开发板传送文件中遇到的问题及解决办法: 使用的软硬件环境: 虚拟机:VMware® Workstation 8.0.1 Linux操作系统:Fedora 9 开发板:mini6410 ...