《数据分析方法与R软件4-R的绘图操作.ppt》由会员分享,可在线阅读,更多相关《数据分析方法与R软件4-R的绘图操作.ppt(99页珍藏版)》请在三一办公上搜索。
1、首都经济贸易大学 统计学院任 韬,数据分析方法与R程序,R的绘图操作,3,本章主要内容,高级绘图语句低级绘图语句交互绘图语句其它绘图语句绘图命令参数ggplot2程序包,4,R是强大的图形构建平台,例如:,5,R是强大的图形构建平台,例如:,6,R是强大的图形构建平台,例如:,7,R是强大的图形构建平台,例如:,8,绘图语句的分类,绘图语句可以分成了三个基本的类:高级绘图语句在图形设备上产生一个新的图区,它可能包括坐标轴,标签,标题等等低级绘图语句会在一个已经存在的图上加上更多的图形元素,如额外的点,线和标签交互绘图语句允许你交互式地用定点设备(如鼠标)在一个已经存在的图上添加图形信息或者提取
2、图形信息,9,本章主要内容,高级绘图语句低级绘图语句交互绘图语句其它绘图语句绘图命令参数ggplot2程序包,10,高级绘图语句,高级图形显示函数是用来产生输入数据的完整图片图中应具备的坐标轴,标签和标题会自动产生高级图形显示语句会开始一个新的图区,必要时会清空当前的图区,11,plot()函数,在R 里面最常用的一个图形函数是plot(),这是一个泛型函数:产生的图形依赖于第一个参数的类型plot(x,y):如果x 和y 是向量,则plot(x,y)将产生y 对x 的散点图用包含两个分量x 和y 的列表或是一个双列的矩阵作为一个参数也能得到一样的结果plot(x):如果x 是一个时间序列,将
3、产生一个时间序列图如果x 是一个数值向量,将产生一个向量值对该向量索引的图如果x 是一个复向量,将会产生一个向量元素虚部对实部的图,12,plot()函数,plot(f):f是一个因子对象,则产生f的直方图plot(f,y):f是一个因子对象,y是一个数值向量则产生y 在f 的各种水平下的盒状图plot(df):df是一个数据框,则产生数据框中变量的分布图plot(expr):expr是一个对象名被“+”分割的表列(如,a+b+c),则产生一系列指定对象的分布图plot(y expr):y是任何对象,expr同上,则得到y相对expr中各个对象画的图,13,plot()的例子,plot(ATO
4、,ROE)plot(ROE)plot(a)plot(ROE+ATO+PM)plot(ROEATO+PM),14,plot()的例子,plot(ATO,ROE)plot(ROE)plot(a)plot(ROE+ATO+PM)plot(ROEATO+PM),15,plot()的例子,plot(ATO,ROE)plot(ROE)plot(a)plot(ROE+ATO+PM)plot(ROEATO+PM),16,plot()的例子,plot(ATO,ROE)plot(ROE)plot(a)plot(ROE+ATO+PM)plot(ROEATO+PM),17,plot()的例子,plot(ATO,ROE
5、)plot(ROE)plot(a)plot(ROE+ATO+PM)plot(ROEATO+PM),18,pairs()函数,如果X 是一个数值矩阵或者数据框,pairs(X)将产生X 的列之间的散点图矩阵,19,pairs()函数,20,qqnorm(x),qqline(x),qqplot(x,y)函数,qqnorm(x)显示数值向量x 相对期望的正态有序分值(Normal order scores)的比较图(正态分值图)qqline(x)是在上述图上加一条理论上的分位对分位的直线qqplot(x,y)产生x 的分位对y 的分位的图以比较二者的分布是否一致,21,qqnorm(x),qqlin
6、e(x),qqplot(x,y)函数,qqnorm(x)qqline(x)qqplot(x,y),22,qqnorm(x),qqline(x),qqplot(x,y)函数,qqnorm(x)qqline(x)qqplot(x,y),23,qqnorm(x),qqline(x),qqplot(x,y)函数,qqnorm(x)qqline(x)qqplot(x,y),24,hist()函数,hist(x)、hist(x,nclass=n)、hist(x,breaks=b,.)产生数值向量x 的直方图程序会自动选择适合的分类数目,但可以通过设定参数nclass=来改变分类数还有一种方法是,通过参数b
7、reaks=精确设置断点(breakpoint)如果设定参数probability=TRUE,柱高度将表示频率而不是频数。,25,hist()函数,hist(x)hist(x,nclass=6)b=seq(40,90,by=2)hist(x,breaks=b)b=seq(40,90,by=2)hist(x,breaks=b,probability=TRUE),26,hist()函数,hist(x)hist(x,nclass=6)b=seq(40,90,by=2)hist(x,breaks=b)b=seq(40,90,by=2)hist(x,breaks=b,probability=TRUE),
8、27,hist()函数,hist(x)hist(x,nclass=6)b=seq(40,90,by=2)hist(x,breaks=b)b=seq(40,90,by=2)hist(x,breaks=b,probability=TRUE),28,hist()函数,hist(x)hist(x,nclass=6)b=seq(40,90,by=2)hist(x,breaks=b)b=seq(40,90,by=2)hist(x,breaks=b,probability=TRUE),29,本章主要内容,高级绘图语句低级绘图语句交互绘图语句其它绘图语句绘图命令参数ggplot2程序包,30,低级绘图语句,有
9、些时候,高级绘图函数不能准确产生你想要的图此时,低级绘图语句可以在当前图上精确增加一些额外信息(如点,线或者文字)注意,低级绘图语句无法单独使用,必须从属于某一个高级绘图语句换句话说,只有当我们使用高级绘图语句创建了一个图形后,才能使用低级绘图语句在该图形上添加内容,31,points(x,y)函数,在当前图上增加(若干)点,点的横、纵坐标分别由向量x和y给出,例如:,32,points(x,y)函数,在当前图上增加(若干)点,点的横、纵坐标分别由向量x和y给出,例如:,33,lines(x,y)函数,将点(坐标由向量x和y给出)按顺序连成线,例如:,34,lines(x,y)函数,将点(坐标
10、由向量x和y给出)按顺序连成线,例如:,35,text(x,y,labels,.)函数,在图上指定的位置(坐标由向量x和y给出)添加由labels给定的文字。例如:,36,text(x,y,labels,.)函数,在图上指定的位置(坐标由向量x和y给出)添加由labels给定的文字。例如:,37,abline()函数,abline(a,b):在当前图上添加斜率为b 截距为a 的直线abline(h=y):在纵轴的y位置添加水平线abline(v=x):在横轴的x位置条件垂直线abline(lm(xy)):绘制obj所示的一元线性回归直线,38,abline()函数,abline(25,0.3)
11、abline(h=36)abline(v=50)abline(lm(yx),39,abline()函数,abline(25,0.3)abline(h=36)abline(v=50)abline(lm(yx),40,abline()函数,abline(25,0.3)abline(h=36)abline(v=50)abline(lm(yx),41,abline()函数,abline(25,0.3)abline(h=36)abline(v=50)abline(lm(yx),42,polygon(x,y,.)函数,绘制由向量x和y定义的顶点所围成的多边形,43,其它低级绘图语句,legend(x,y,
12、legend,.)在当前图的特定位置增加图例(legend)。标识字符,线条格式,颜色等都是被字符向量legend 中的具体参数所注释必须给定一个含有画图单位对应值的参数v(一个和legend 长度一致的向量):legend(,fill=v):填充盒子的颜色legend(,col=v):点或者线条的颜色legend(,lty=v):线条样式legend(,lwd=v):线条宽度legend(,pch=v):标识字符(字符向量),44,其它低级绘图语句,title(main,sub)将main 定义的标题以大字体的形式放在当前图的顶部,同时可以将sub 定义的小标题以小字体的形式放在下部(可选)
13、axis(side,.)在第一个参数(1到4,从底部顺时钟方式数)定义的某一侧增加一个坐标轴。另一个参数控制坐标轴相对图区的位置,刻度位置和标签位置。这对调用参数设置为axes=FALSE的plot()函数后增加定制的坐标轴非常有用,45,一个复杂图形的例子,46,一个复杂图形的例子,47,本章主要内容,高级绘图语句低级绘图语句交互绘图语句其它绘图语句绘图命令参数ggplot2程序包,48,交互绘图语句,无论是高级绘图语句还是低级绘图语句都是静态的,即图形生成以后除了添加新的元素无法做其他改变交互绘图语句允许用户在已经生成的图形上进行操作,从而使图形具有动态调整的能力,49,locator(n
14、,type)函数,locator()函数的功能是返回用户鼠标左键在当前图上点击的位置的坐标参数n(默认值为512)表示最大的点击次数函数运行结束的条件是点击次数达到n次或用户点击鼠标右键并选择“停止”参数type 允许在被点击的位置上添加点、星号等;默认值为n,表示不添加任何内容函数返回值是包含名为x和y两个向量的列表,记录了被点击位置的横、纵坐标值,50,locator(n,type)函数,51,locator(n,type)函数,52,locator(n,type)函数,53,identify(x,y,labels)函数,identify()函数允许用户在已经显示在图上的一系列点中,通过鼠
15、标左键点击选择一些点参数labels 定义的标签将别放置在被选中的点旁边(labels为空时,默认为点的索引值)参数x和y给出了所有显示在图中的备选的点的坐标,当用户在图形中点击时,距离点击位置最近的备选点会被选中函数的返回值是被选中点 的索引值,54,identify(x,y,labels)函数,有时候我们想标定图上的一些特定点,而不是它们的位置,即我们需要的是这个点的索引值,而不是其坐标例如,我们可能期望用户能在图形显示上选择一些有意思的点,然后将这些点的索引值记录下来此时,identify()函数可以实现这一设想,55,identify(x,y,labels)函数,例如,确定 图中的奇异
16、点:,56,identify(x,y,labels)函数,例如,确定 图中的奇异点:,57,identify(x,y,labels)函数,例如,确定 图中的奇异点:,58,identify(x,y,labels)函数,例如,确定 图中的奇异点:,59,本章主要内容,高级绘图语句低级绘图语句交互绘图语句其它绘图语句绘图命令参数ggplot2程序包,60,使用lowess()函数平滑散点,lowess()函数使用非参数回归的方法拟合出散点的平滑曲线,如:,61,使用lowess()函数平滑散点,lowess()函数使用非参数回归的方法拟合出散点的平滑曲线,如:,62,使用curve()函数绘制方程
17、图形,curve()函数可以绘制出给定方程的曲线,其形式为 curve(expr,from=NULL,to=NULL,n=101,add=FALSE,.)expr为方程式from和to为横坐标显示范围,默认为NULLn为用于绘制曲线所需要计算的点的个数,默认为101add表示是创建新图还是在已有图形中添加曲线,默认是FALSE其他图形参数在这里同样适用,63,使用curve()函数绘制方程图形,例如绘制标准正态分布曲线,64,使用curve()函数绘制方程图形,向已存在的图添加标准正态分布曲线,65,使用curve()函数绘制方程图形,向已存在的图添加标准正态分布曲线,66,本章主要内容,高级
18、绘图语句低级绘图语句交互绘图语句其它绘图语句绘图命令参数ggplot2程序包,67,关于绘图参数,当创建图形时,R 的默认设置往往不能符合要求利用图形参数几乎可以定制任何你想显示的方式R 拥有一个数目很大的图形参数列表,该列表包括控制线条样式,颜色,图形排列和文字对齐等方面的参数每一个图形参数都有名字(如“col”,设置颜色)和值(如颜色值)图形参数可以用两种方式设定:要么是永久性的,在一次R的会话中一直有效;要么是临时性的,仅仅影响当前图形,68,永久性地改变:par()函数,函数par()用于访问和修改当前图形设备的参数列表直接使用par()函数,将返回所有图形参数的列表和当前设备的设定值
19、par(c(“col”,“lty”):仅仅返回col和lty两个参数的当前值par(col=4,lty=2):改变col和lty两个参数的当前值,69,永久性地改变:par()函数,70,临时性地改变:绘图函数的参数,例如:plot(x,y,pch=+)这将产生一个以加号为标符的散点图。这个语句不会影响后面的图形语句的默认图标,71,高级绘图语句的参数,xlab=string、ylab=string:设定x 和y 轴的标签。可以用这些参数修改默认标签。默认标签常常是用于高级绘图函数中的对象的名字main=string:图形标题,以大字体置于图形的顶部sub=string:子标题,以小字体放在x
20、-轴底部axes=FALSE:禁止产生坐标轴,72,常用图形参数,type=:控制输出图形(特别是线条)的类型type=p 只显示点(默认)type=l 显示线条type=b 同时显示点和线type=o 将点覆盖在线上type=h 绘制从点到零轴(x 轴)的垂直线type=n图形不显示,但是坐标轴仍然显示(默认),并且坐标依然以数据设定。这个非常适合随后用低级绘图函数画图。,73,常用图形参数,pch=+:以引号中的字符作为点的标志pch=4:当为pch设定一个0到25之间的整数时,将产生一个特定的符标lty=2:设定线条类型。类型1是实线,类型0是不可见的,类型2和其他是点线和虚线,或者是点
21、划线lwd=2:设定线条宽度col=2:点,线,文本,填充区域和图像的颜色设置font=2:设定字体,1对应于纯文本,2对应粗体,3对应斜体,4对应粗斜体,5对应符号体(包括希腊字母),74,多重图形环境,R 允许你在一个单页上创建一个n m 图形阵列。每一个图有它自己的边缘,图形阵列是被可选的外边缘(outer margin)包围着mfcol=c(3,2):设置多重图形阵列的大小。第一个值是行数;第二个值是列数,使得图片以列的方式放置mfrow=c(2,4):使得图片以行的方式放置,75,改变坐标轴范围,xlim和ylim选项可以改变坐标轴范围,如:,76,改变坐标轴范围,xlim和ylim
22、选项可以改变坐标轴范围,如:,77,本章主要内容,高级绘图语句低级绘图语句交互绘图语句其它绘图语句绘图命令参数ggplot2程序包,78,什么是ggplot2,ggplot2是当前非常流行的R环境下的绘图程序包与R本身的绘图功能相比,ggplot2具有语法上的统一性,通过图形语法来支持绘图功能ggplot2可以避免诸如添加图例等繁琐的细节与很多统计软件一样,ggplot2有很多预设图形,同时还可以很方便的将各种图形元素进行组合ggplot2还具有图层的概念,79,图形语法,Wilkinson(2005)创建了一套用来描述所有统计图形深层特性的语法规则,即图形语法根据该语法,一张统计图形就是从数
23、据到几何对象(geometric object,缩写为geom,包括点、线,条等)的图形属性(aesthetic attributes,缩写为aes,包括颜色、形状、大小等)的一个映射,并绘制在某个特定的坐标系(coordinate system,缩写为coord)中。图形中还可能包含数据的统计变换(statistical transformation,缩写为stats)通过分面(facet)可以生成数据不同子集的图形,80,qplot()函数,qplot()函数(即quick plot)是该程序包最基本的函数,其语法形式为:qplot(x,y=NULL,.,data,facets=NULL,
24、margins=FALSE,geom=auto,stat=list(NULL),position=list(NULL),xlim=c(NA,NA),ylim=c(NA,NA),log=,main=NULL,xlab=deparse(substitute(x),ylab=deparse(substitute(y),asp=NA),81,案例:上市公司特殊处理(ST),82,83,84,85,86,几何对象geom,几何对象决定了图形的类型只含有一种几何对象的图通常有特定的名字,比如“散点图”,“条形图”,“箱线图”由多种几何对象组合而成的更复杂的图形通常没有特定的名字,87,geom参数,geom=“point”绘制散点图geom=“smooth”拟合平滑曲线,并显示标准误geom=“boxplot”绘制盒型图geom=“path”或 geom=“line”在数据点之间绘制连线geom=“histogram”绘制直方图(当单个向量作为数据时,直方图是默认选项)geom=“freqpoly”绘制频率多边形geom=“density”绘制密度曲线geom=“bar”绘制条形图,88,0为最不平滑,1为最平滑,89,分类变量(因子),90,91,92,93,94,95,分面,96,97,98,Thanks!,