R语言学习笔记(三)

9 中级绘图

数据分析 BY 伦大锤   阅读量 1,627

在“基本图形”中所接触的图形,主要用于展示单类别型或连续型变量的分布情况,此处将介绍更多用于展示双变量间关系(二元关系)和多变量间关系(多元关系)的绘图方法。

9.1 散点图

散点图可用来描述两个连续型变量间的关系,让我们从最简单的plot()函数出发。

生成的图形中包括散点图、一条最佳拟合直线(abline)和一条平滑曲线(lowess)。

现在使用car包中的scatterplot()函数绘制一个增强的版本,绘制不同气缸数量汽车每加仑英里数对车重的图形,包括散点图、拟合直线和平滑曲线。

散点图矩阵

散点图矩阵用于展示多幅散点图,pairs()函数可以创建基础的散点图矩阵,以下代码包含mpg、disp、drat和wt中任意两者的散点图。

pairs()函数创建的散点图矩阵

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

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

spread=FALSE选项表示不添加展示分散度和对称信息的直线。

scatterplotMatrix()函数

再来一个scatterplotMatrix()函数的使用例子,主对角线的核密度曲线改为了直方图,并且直方图以汽车气缸数为条件绘制。

scatterplotMatrix()函数另一个例子

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

首先查看各个变量之间相关性的大小:

可以发现相关性最高(0.89)的是车重(wt)和排量(disp),以及车重(wt)和每加仑英里数(mpg)。相关性最低(0.68)的是每加仑英里数(mpg)和后轴比(drat)。以下代码根据相关性大小,对散点图矩阵中的这些变量重新排序并着色。

按相关性排序并着色后的散点图矩阵

高密度散点图

当散点图中点数量过大时,数据点的重叠将会导致绘图效果显著变差。对于这种情况,可以使用封箱、颜色和透明度等来指定图中任意点上重叠点的数目。

smoothScatter()函数可利用核密度估计生成用颜色密度来表示点分布的散点图。

smoothScatter

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

hexbin包中的hexbin()函数

IDPmisc包中的iplot()函数也可以通过颜色来展示点的密度。

IDPmisc包中的iplot()函数

三维散点图

如果想一次性对三个定量变量的交互进行可视化,那么可以使用scatterplot3d中的scatterplot3d()函数进行绘制。

最基本的三维散点图

scatterplot3d()函数提供了许多选项,包括设置图形符号、轴、颜色、线条、网格线、突出显示和角度等功能。例如以下代码生成一幅突出显示效果的三维散点图,增强了纵深感并添加了连接点与水平面的垂直线。

带纵深效果和垂直线的三维散点图

还可以再加上一个回归面。

使用rgl包中的plot3d()函数可创建交互式的三维散点图,通过鼠标即可对图形进行旋转。

Rcmdr包中的scatter3d()函数可以实现类似功能。

气泡图

三维散点图用z轴表示第三个变量的大小,另一种思路是:先创建一个二维散点图,然后用点的大小来代表第三个变量的值,即气泡图。

使用symbols()函数来创建气泡图,支持的形状包括圆圈图、方形图、星形图、温度计图和箱线图,以绘制圆圈图为例:

如果想用面积而不是半径来表示第三个变量,则需要进行转换:

以下代码中,x轴表示车重,y轴表示每加仑英里数,气泡大小表示发动机排量。

一般来说,统计人员使用R时都倾向于避免使用气泡图,原因和避免使用饼图一样:相对于长度的判断,人们对体积/面积的判断通常更加困难。

9.2 折线图

将散点图上的点从左往右连接起来,即可得到折线图。以基础安装中的Orange数据集为例,绘制第一种树数据的散点图和折线图。

两幅图的区别取决于参数type=”b”,折线图一般可用以下两个函数之一来创建:

type=可选值如下:

  • p:只有点;
  • l:只有线;
  • o:实心点和线(即线覆盖在点上);
  • b、c:线连接点(c时不绘制点);
  • s、S:阶梯线;
  • h:直方图式的垂直线;
  • n:不生成任何点和线(通常用来为后面的命令创建坐标轴)

不同type=参数对应折线图

以下展示一个更复杂的折线图创建过程,每种树都有自己独有的线条。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值