前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【数据分析 R语言实战】学习笔记 第四章 数据的图形描述 (上)

【数据分析 R语言实战】学习笔记 第四章 数据的图形描述 (上)

作者头像
统计学家
发布2019-04-10 16:52:54
1.1K0
发布2019-04-10 16:52:54
举报

4.1 R绘图概述

以下两个函数,可以分别展示二维,三维图形的示例:

>demo(graphics) >demo(persp)

R提供了多种绘图相关的命令,可分成三类:

高级绘图命令:在图形设备上产生一个新的图区,它可能包括坐标轴、标签、标题等。

低级绘图命令:在一个己经存在的图形上加上更多的图形元素,如额外的点、线和标签。

交互式图形命令:允许交互式地用鼠标在一个已经存在的图形.上添加图形信息或者提取图形信息。

使用R语言作图,主要按照以下步骤进行:

①取原始数据,准备好绘图需要的变量。

②如有需要,对绘图区域进行设置、分割。

③绘制图形,例如创建坐标轴井绘制点图、曲线或其他类型的图。

④标注图形。对图形进行标注,包括在图形中添加标题、坐标轴标注、文字标注等。

⑤设置图形格式,添加图例。包括设置图形中的线宽、线型、颜色,标一记点的形状、大小、颜色,以及坐标轴格式等。

⑥保存和导出图形。按指定文件格式、属性保存或导出图形,以备以后使用。

4.2绘图区域分割

主要有三个函数par(), layout(), spiit.screen()可以完成图形区域的分割。

4.2.1函数par()

函数par() 可以将绘图区域分割成规则的几部分,例如par(mfrow=c(3,2))将图形区域分成3X2的多重图框,每块.显示一个图形,按行显示,也可以使用mfcol按列输入图形。

4.2.2函数layout()

layout()内部的参数是一个矩阵(matrix ),其通过定义矩阵来灵活地将图形区域进行分割,matrix默认按列输入。

layout(mat, widths = rep.int(1,ncol(mat)),heights = rep.int(1, nrow(mat)), respect = FALSE)

mat为矩阵,用于设置窗口的划分,矩阵的0元素表示该位置不画图,非0元素必须包括从1开始的连续整数值,比如,1,2,...,N,按非0元素的大小设置图形的顺序。widths用来设置窗口不同列的宽度,heights设置不同行的高度。例如:

layout(matrix(1:4,2,2))#将绘图区域分成2X2的多重图框。 layout(matrix(c(1,3,2,3),2,2))#将图形区域分成三个不规则的区域。

layout(matrix(c(1,1,2,3,2,3),2,3))#将图形区域分成如下的不规则区域。

分割完成后,通过指令layout.show(3)可以查看区域分割后的结构。要取消图形区域分割,输入指令layout(1)

4.2.3函数split.screen()

split.screen()同样由向量或矩阵灵活控制区域的分割方式。

>split.screen(c (2,1)) #释将图形区域分成上下两部分显示 [1] 1 2 >split.screen(c(1,2),screen=2)#将第二部分(下半区)又分割成两个区域 [1]3 4 >screen(1)#准备在第一个区域绘图

4.3二维图形

4.3.1高级绘图函数

1.函数plot()

plot()是最常用的高级绘图函数,这是一个泛型函数,其产生的图形依赖于参数的类型。

其他高级绘图函数:

高级绘图函数的参数设置:

函数hist()

代码语言:javascript
复制
hist(x, breaks = "Sturges",freq = NULL,probability= !freq,include.lowest = TRUE, right = TRUE,density = NULL, angle = 45, col = NULL, border = NULL,main = paste("Histogram of" , xname),xlim = range(breaks), ylim = NULL,xlab = xname, ylab,axes = TRUE, plot = TRUE, labels = FALSE,nclass = NULL, warn.unused = TRUE, ...)

4 .3.2多元数据绘图

> data(warpbreaks) > coplot(breaks~1:54|wool*tension,data=warpbreaks,col="red",bg="pink",pch=21,bar.bg=c(fac="lightblue"))

4.3.3低级绘图函数

利用高级函数画出基本图形后,可使用低级绘图函数添加新的图形元素,如点、图例、标鉴等

4 .3.4图形美化

4.3.5交互式绘图命令

R的交互式函数允许用户直接用鼠标在一个图上提取和提交信息,最简单、最常用的函数是:

Locator(n,type="n",…)

> x=rnorm(10) > plot(x) > locator(5,"o",col="red") $x [1] 1.929092 4.018157 6.998556 10.034663 [5] 7.945598 $y [1] 1.21499224 0.97074910 0.43574030 [4] 0.05192964 -0.70406106

R中另一个比较有意思的交互函数是identify()它用于在散点图中找出点。输入它之后,系统读取在图中鼠标按下时指针的坐标位置,然后搜索(x,y)指定的坐标点,如果这一点足够接近指针的位置,那么将在图中返回指定的图形元素。 identify(x, y, labels,…)

4.4三维图形

R中绘制三维图形的基本函数有三个,分别为:

image(x,y,z),产生长方形的网格,以不同颜色表示z的值。

contour(x,y,z),以等高线表示z的值。

persp(x,y,z),产生3D表面。

4.5 lattice程序包

lattice适用于多个变量的数据集绘图,其中的大部分函数是以一个公式作为主要的自变量.

例如y~x|z表示绘制Y关于x的图,并以变量z为分类依据,画出多个图。

> library(ggplot2) > library(lattice) > data(diamonds,package="ggplot2") > sample=diamonds[sample(nrow(diamonds),1000),] > xyplot(price~carat,data=sample,groups=cut,auto.key=list(corner=c(1,0)),type=c("p","smooth"),span=.7,main="PriceVS. Carat")

为了更好地按某一分类变量去比较数据,有些时候也需要分割图形区域。使用lattice绘图时,分割绘图区域的操作变得很简单,只要设置参数layout即可。lattice中含有绘制三维图形的函数,其中cloud()用于绘制三维散点图,与plot3d()效果相似,但可以进行分组绘图:wireframe()用于绘制3D表面图,它与基础包中的persp()效果相似。

> x=seq(-pi,pi,len=20)> y=seq(-pi,pi,len=20)> g=expand.grid(x=x,y=y)> g$z=sin(sqrt(g$x^2+g$y^2))> wireframe(z~x*y,data=g,drape=TRUE,aspect=c(3,1),colorkey=TRUE,main=expression(z=sin(sqrt(g$x^2+g$y^2))))

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档