版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据管理控制结构编写函数apply函数族数据输入与输出综合实验目录2控制结构R是块状结构程序语言块由大括号{}划分程序语句换行符或“;”分割基本控制结构顺序结构分支结构循环结构控制结构分支结构分支语句:if-elseswitch语句可以直接实现多分支语句。如果条件式结果等于n,则执行第n条分支的处理;如果取值不符合条件,则返回值是NULL。分支结构分支语句:switch分支语句>p<--0.01>{+if(p<0)+print("p<0!")+else+print("p>0!")+}[1]"p<0!">c(1:3,5)[1]1235>for(iinc(1:3,5))+print(switch(i,"A","B","C","D"))
[1]"A"[1]"B"[1]"C"NULL循环结构控制语句描
述break语句终止循环语句,执行循环后的下一语句next语句跳过本次循环,执行下一次循环循环类型描
述for循环基本的循环语句,变量的遍历while循环类似for语句,满足条件执行循环体repeat循环多次执行,满足条件退出循环循环结构循环语句:for>pv<-c(40,55,70,95,82,100,66,90)>m<-1>result<-"">for(iinpv){+if(i<60){+result[m]<-"需要加强"+}elseif(i<=80){+result[m]<-"继续加油"+}else{+result[m]<-"做得很好"+}+m<-m+1+}>m<-1>result<-"">for(iin1:length(pv)){+if(pv[i]<60){+result[i]<-"需要加强"+}elseif(pv[i]<=80){+result[i]<-"继续加油"+}else{+result[i]<-"做得很好"+}+}>result[1]"需要加强""需要加强""继续加油""做得很好""做得很好""做得很好""继续加油""做得很好"循环结构循环语句:while比较:for是通过遍历一个向量来控制循环次数,while是直接设置循环的范围。>pv<-c(40,55,70,95,82,100,66,90)>i<-1>result<-"">
while(i<=length(pv)){+if(pv[i]<60){+result[i]<-"需要加强"+}elseif(pv[i]<=80){+result[i]<-"继续加油"+}else{+result[i]<-"做得很好"+}+i<-i+1+}>result[1]"需要加强""需要加强""继续加油""做得很好""做得很好""做得很好"[7]"继续加油""做得很好"注意:repeat是无限循环语句,需要使用break语句跳出循环。循环结构循环语句:repeat控制语句:break>pv<-c(40,55,70,95,82,100,66,90)>i<-1>result<-"">repeat{+if(i>length(pv)){+break+}+if(pv[i]<60){+result[i]<-"需要加强"+}elseif(pv[i]<=80){+result[i]<-"继续加油"+}else{+result[i]<-"做得很好"+}+i<-i+1+}>result基本控制结构顺序结构分支结构:if-else,switch循环结构:for,while,repeat,break,next小结练习:掌握本讲中的应用示例。编写函数自定义函数:function()的用法:myfunction为函数名称,大括号{}内的语句为函数体。arglist为函数中的参数列表,是在函数体内部将要处理的值,只在函数内部使用。return()是函数的返回值。自定义函数的编写Myfunction<-function(arglist){ statements return(object)}函数名输入参数函数返回值完整的函数体包括三个部分:异常处理,运算过程,返回值。很多时候简化函数体。异常处理:输入的数据不能满足函数计算的要求,或者类型不符,应设计相应的程序代码提示哪个地方出现错误。运算过程:包括具体的运算步骤,该函数要完成的功能。返回值:return(),遇到return(),程序会终止运行。函数的编写求向量中的偶数个数函数体:异常处理运算过程返回值函数的编写:示例>Ans<-function(x){+k=0+stopifnot(is.numeric(x))+for(iinx){+if(i%%2==0){+k=k+1+}+}+return(k)+}>Ans(1:10)[1]5函数的编写:示例>S<-function(x,y){+a<-x+y+return(a)+}>S(2,3)[1]5>norm<-function(x)sqrt(x%*%x)>norm(1:4)[,1][1,]5.477226%*%用于将矩阵与其转置相乘。>(1:4)[1]1234>(1:4)%*%(1:4)[,1][1,]30>sqrt((1:4)%*%(1:4))[,1][1,]5.477226>class(sqrt((1:4)%*%(1:4)))[1]"matrix"可以自行分解测试函数的编写:示例>(function(x,y){z<-x^2+y^2;x+y+z})(0:7,1)[1]2481422324458>a<-function(x,y){z<-x^2+y^2;x+y+z}>a(0:7,1)[1]2481422324458函数的嵌套函数内变量的作用域函数的编写>S<-function(x,y){+a<-x+y+b<-function(){+return(a*2)+}+return(b())+}>S(2,3)[1]10自定义函数:function()自定义函数的用法函数的嵌套和变量的作用域函数体小结apply函数族数据批量处理的方法:循环操作、函数操作循环操作:for或while的每次相互独立的操作,效率较低。函数操作:对一批数据做相同的处理,也称为向量化操作,快速简洁。apply函数族是一组函数:apply,lapply,sapply,tapply,mapply,rapply,vapply,eapply。能够对数据进行向量化操作,快速实现对数据的循环、分组、过滤、控制,返回结果。apply函数族apply函数族>?applyapply(x,MARGIN,FUN,…)#把FUN函数运用到x数据的第MARGIN维度上其中:x表示需要处理的数据;MARGIN表示对哪个维度使用函数;FUN是指所使用的函数,可以是自定义的函数,也可以是R自带的函数;
”…”表示FUN函数的一些参数simplify表示对输出的数据的简化;INDEX是一系列因子,和x的长度是一样的,表示处理数据时的索引。
apply函数族apply函数族:示例>(x<-matrix(1:20,ncol=4))
[,1]
[,2]
[,3][,4][1,]1
6
11
16[2,]2
7
12
17[3,]3
8
13
18[4,]4
9
14
19[5,]5
10
15
20>apply(x,1,mean)[1]8.59.510.511.512.5>apply(x,2,mean)[1]381318>apply(x,1,max)[1]1617181920维度为1:行维度为2:列mean:取平均值apply函数族函数名称使用对象返回结果apply()矩阵、数组、数据框向量、数组、列表lapply()列表、向量列表sapply()列表、数据框、向量向量、数组tapply()不规则数组列表mapply()列表、向量列表tmlsveapplyrapply函数族:以iris鸢尾花卉数据集示例iris鸢尾花卉数据集,是常用的分类实验数据集,包含150条数据样本。样本分为3类(Setosa,Versicolour,Virginica),每类50条,每条数据包含5个属性:花萼长度,花萼宽度,花瓣长度,花瓣宽度和类别。>class(iris)[1]"data.frame">dimnames(iris)[[2]]#
显示列的名字,等同于colnames(iris)[1]"Sepal.Length""Sepal.Width""Petal.Length""Petal.Width""Species">head(iris)Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies15.13.51.40.2setosa24.93.01.40.2setosa34.73.21.30.2setosa44.63.11.50.2setosa55.03.61.40.2setosa65.43.91.70.4setosaapply函数族:以iris鸢尾花卉数据集示例>apply(iris[,1:4],1,mean)#前四列数据,按行,求均值
[1]2.5502.3752.3502.3502.5502.8502.4252.5252.2252.4002.7002.500[13]2.3252.1252.8003.0002.7502.5752.8752.6752.6752.6752.3502.650[25]2.5752.4502.6002.6002.5502.4252.4252.6752.7252.8252.4252.400[37]2.6252.5002.2252.5502.5252.1002.2752.6752.8002.3752.6752.350[49]2.6752.4754.0753.9004.1003.2753.8503.5753.9752.9003.8503.300[61]2.8753.6503.3003.7753.3503.9003.6503.4003.6003.2753.9253.550[73]3.8003.7003.7253.8503.9504.1003.7253.2003.2003.1503.4003.850[85]3.6003.8754.0003.5753.5003.3253.4253.7753.4002.9003.4503.525[97]3.5253.6752.9253.4754.5253.8754.5254.1504.3754.8253.4004.575[109]4.2004.8504.2004.0754.3503.8004.0254.3004.2005.1004.8753.675[121]4.5253.8254.8003.9254.4504.5503.9003.9504.2254.4004.5505.025[133]4.2503.9253.9254.7754.4254.2003.9004.3754.4504.3503.8754.550[145]4.5504.3003.9254.1754.3253.950>apply(iris[,1:4],2,mean)#前四列数据,按列,求均值
Sepal.LengthSepal.WidthPetal.LengthPetal.Width5.8433333.0573333.7580001.199333apply函数族:以iris鸢尾花卉数据集示例>tapply(iris$Sepal.Length,iris$Species,mean)
setosaversicolorvirginica5.0065.9366.588apply函数族>?lapply>?sapply>?vapplyapply函数族:以iris鸢尾花卉数据集示例>lapply(iris[,1:4],mean)
$`Sepal.Length`[1]5.843333
$Sepal.Width[1]3.057333
$Petal.Length[1]3.758
$Petal.Width[1]1.199333lapply#把函数FUN运用到列表的每一个元素对列表、数据框数据集进行循环,返回值为列表apply函数族:以iris鸢尾花卉数据集示例>sapply(iris[,1:4],mean)Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies5.8433333.0573333.7580001.199333NA
sapply#是lapply函数更加友好的版本R语言中,使用向量化操作代替循环操作。apply函数族,能够把函数按照某种方式运用于数据对象上,实现对数据的循环、分组、过滤、控制等操作。常用函数:apply,tapply,lapply,sapply。常用的实验数据集:iris鸢尾花卉数据集。小结数据的输入输出R可以从键盘、文本文件、MicrosoftExcel和Access、流行的统计软件、特殊格式的文件,以及多种关系型数据库中导入数据。数据源TXTCSV经常使用的文本文件:txt、csv文本文件可被几乎所有的数据分析软件读取。通用格式为分隔符值:逗号分隔值(CSV),制表符分隔值(TXT)。导入方法使用命令来导入导出数据。如果使用RStudio,可以使用其提供的数据导入功能。数据的导入矩形(类似电子表格的)数据通常存储在带有分隔符的文件中,特别是逗号分隔值(CSV)和制表符分隔值(TXT)文件。read.table()函数读取这些分隔符文件,并将结果存储在数据框中。CSV和TXT文件
>library(learningr)>deer_file<-system.file('extdata’,'RedDeerEndocranialvolume.dlm',+package='learningr')>deer_data<-read.table(deer_file,header=TRUE,fill=TRUE)>head(deer_data)SkullIDVolCTVolBeadVolLWHVolFinarelliVolCT2VolBead2VolLWH21DIC443893751484337NANANA2B113893701722377NANANA3DIC903523451495328NANANA4DIC833883701683377NANANA5DIC7873753551458328NANANA6DIC15733253201363291NANANAread.table()的参数:header=TRUE,是否有标题行。sep=‘’,使用哪个字符作为字段之间的分隔符。nrow可以指定读取数据的行数。skip决定跳过文件开始的多少行。fill=TRUE会使用NA值来代替那些缺失的值。更多高级选项包括:覆盖默认的行名、列名和类,指定输入文件的字符编码,以及输入的字符串格式的列如何声明。其他输入输出函数:read.csv,write.table和write.csv。CSV和TXT文件如果文件的结构松散,可先读入文件中的所有文本行,再对其内容进行分析或操作。使用readLines()来读取文件,writeLines()写操作。非结构化文本文件>text_file<-system.file('extdata’,+'shakespeare.s.The.Tempest..from.Project.Gutenberg.pg2235.txt',+package='learningr')>the_tempest<-readLines(text_file)>head(the_tempest)[1]"***TheProjectGutenberg'sEtextofShakespeare'sFirstFolio***"[2]"***************************TheTempest**************************"[3]""[4]“Thisisour3rdeditionofmostoftheseplays.Seethe(略)>writeLines(text_file,"shakespeare's,backwards.txt")在Windows系统中,可以使用RODBC包、xlsx包、XLConnect等包来访问Excel文件。导入Excel数据>library(xlsx)>file<-'sample.xls'>res<-read.xlsx(file,1)>detach(package:xlsx)#利用XLConnect包读取Excel数据>library(XLConnect)>wb<-loadWorkbook('sample.xls')>xldf<-readWorksheet(wb,sheet=getsheets(wb)[1])统计某文档中各单词出现的频次,并按频次排序。练习>wal<-file('/Wal.txt’)>findwords<-function(tf){+txt<-scan(tf,what="")+w1<-list()+for(iin1:length(txt)){+wrd<-txt[i]+w1[[wrd]]<-c(w1[[wrd]],i)+}+return(w1)+}>freqwl<-function(wrdlist){+freqs<-sapply(wrdlist,length)+return(wrdlist[order(freqs)])+}>word<-findwords(wal)>wordl<-freqwl(word)>wor<-sapply(wordl,length)>barplot(wor[seq(length(wor),length(wor)-10,by=-1)])网络数据正在逐渐增多,R中有一些用于抓取网络数据的包。读取网络数据quantmod包:用于金融建模的扩展包。XML包:包含了一些抓取网络数据的常用函数。RCurl包:提供了由R到libcurl库的接口,实现HTTP的一些功能。例如,从服务器下载文件、保持连接、上传文件、采用二进制格式读取、句柄重定向、密码认证等。爬取苹果公司上市至今的每天股价数据,并画出技术分析图进行研究。quantmod举例#利用quantmod包抓取股票数据#抓取苹果公司每日的股票信息library(quantmod)getSymbols('AAPL',src='yahoo‘)[1]"AAPL"#查看最后六天的股票记录tail(AAPL)AAPL.OpenAAPL.HighAAPL.LowAAPL.CloseAAPL.VolumeAAPL.Adjusted2017-08-17160.52160.71157.84157.8627940600157.86......#主绘图函数chartSeries(AAPL,theme='white')#三个基本图形barChart(AAPL,theme='white')#条形图candleChart(AAPL,theme='white')#蜡烛图lineChart(AAPL,theme='white')#线图#技术分析图chartSeries(AAPL,theme='white')require(TTR)addADX()#平均指向指标ADXaddATR()#平均真实波幅指标ARTaddBBands()#布林线指标BBandsaddCCI()#顺势指标CCIaddEMA()#指数平均指标EMA从雅虎爬取苹果公司2007-01-03至2017-08-24的每天股价数据,并画出技术分析图进行研究。quantmod举例小结数据源:R可以从键盘、文本文件、MicrosoftExcel和Access、流行的统计软件、特殊格式的文件,以及多种关系型数据库中导入数据。常用的文本文件:csv,txt数据文件。一些扩展包可以提供多种类型数据源的输入输出功能。45综合实验掌握控制结构(分支、循环)的使用方法。掌握函数和自定义函数的方法。掌握apply函数族的使用方法。掌握输入输出外部数据的方法。熟悉集成开发环境RStudio。能够通过help方法自学函数及其中参数的用法。实验目标第3章讲义中的案例第3章综合实验第3章使用的函数第3章思考与练习实验内容及资料目标:掌握控制结构的使用方法;掌握自定义函数的方法内容:实验1:编写自定义函数实验1-1:编写一个自定义函数,判断101~200之间有多少个素数,并输出所有素数。实验1-2:编写一个自定义函数求两个矩阵的乘积,并找出乘积矩阵中的最大元素。目标:掌握控制结构的使用方法;掌握自定义函数的使用方法内容:实验2:百分制成绩换算
定义一个函数,将百分制成绩换算为等级制成绩,标准为:A(大于等于90)、B(大于等于80)、C(大于等于70)、D(大于等于60)、E(小于60)。并使用这个函数对一组学生的百分制成绩进行换算。目标:掌握apply函数族的使用方法;掌握控制结构的使用方法内容:实验3:两种方法实现数据处理实验3-1:使用两种方法(for循环和apply函数族),计算列表x<-list(a=1:5,b=exp(0:3))中的各子列表的最大值、最小值与中位数。实验3-2:使用两种方法(for循环和apply函数族),计算数组array(c(1:24),dim=c(2,3,4))中的各行的合计值。目标:掌握获取外部数据的方法内容:实验4:实现爬虫功能(拓展)实验4-1:简单爬取北京交通大学新闻网页,将新闻题目存储为txt或csv文件。实验4-2:爬取当当网或京东网上关于数据科学类的图书排名及价格,将数据存储为.csv文件。实验4-3:爬取天气预报或空气质量相关的1个月的数据,将数据存储为csv格式,并使用R语言的apply函数族计算该月某指标的最高值、最低值和均值。思考与讨论数据可视化绘图基础R基本绘图包:graphics高级绘图函数:plot()函数,直方图、密度图、箱线图、饼图、散点图、热力图……低级绘图函数:颜色,点,文本,线条,图例,坐标轴……绘图进阶R拓展绘图包:ggplot2绘制更丰富的图形:ggplot()函数综合实验目录绘图基础R基本绘图包:graphics高级绘图函数绘制多种图形:plot()函数直方图、密度图、箱线图、饼图、散点图、热力图……低级绘图函数颜色,点,文本,线条,图例,坐标轴……图形组合和保存组合多幅图形输出图形到屏幕、文件目录基本绘图包graphics提供丰富的数据可视化函数高级绘图函数绘制完整的图形低级绘图函数增加图形中的元素R基本绘图包:graphics>help(graphics)绘图函数:plot()>help(plot)常用绘图函数:plot()可绘制多种类型的图形散点图折线图、点线图、阶梯图等是一个泛型函数>plot(xy坐标数据,type类型,main标题,sub副标题,xlabX轴标题,ylabY轴标题...)美国MotorTrend杂志收集的1973到1974年期间32种车型的11个指标:油耗及10个与设计及性能方面的指标。mtcars数据集>help(mtcars)>help(mtcars)#查看帮助文档>head(mtcars)#显示前几行数据>nrow(mtcars)#行数>attach(mtcars)>plot(wt,mpg)>detach(mtcars)绘图函数:plot()横坐标(重量):wt:Weight(1000lbs)纵坐标(里程):mpg:Miles/Gallon>plot(mtcars$wt,mtcars$mpg)#以mtcars数据集为例,显示重量和里程的关系。或#attach():把数据库加入R的搜索路径>attach(mtcars)>plot(wt,mpg,type='h',col='red')>detach(mtcars)绘图函数:plot()横坐标(重量):wt:Weight(1000lbs)纵坐标(里程):mpg:Miles/Gallon#'h'for'histogram'like(or'high-density')verticallines#plot函数中的参数的使用绘图函数:plot()plot()函数产生一个图形使用plot等高级绘图函数,新建一个图形。通过对函数的参数赋值,确定图形的基本样式。若需要更为丰富的图形元素,可逐条输入低级绘图函数实现。丰富的高级绘图函数其他高级绘图函数高级绘图函数函数功能plot()绘制散点图等多种图形hist()绘制直方图boxplot()绘制箱线图stripchart()绘制点图(带状图)barplot()绘制条形图dotplot()绘制点图pie()绘制饼图matplot()绘制数学图形其他高级绘图函数>x<-1:5>par(font=1)#设定公共的图形参数>hist(x,main='直方图',xlab='x')#绘制直方图>stripchart(x,main=‘点图’,xlab=‘x’,ylab=‘y’)#绘制一维散点图>boxplot(x,main=‘箱线图,xlab=’x‘,ylab=’y’)#绘制箱线图>barplot(x,names.arg=c('A','B','C','D','E'))#绘制条形图>pie(x,labels=c('A','B','C','D','E'))#绘制饼图>x=1:30#绘制余弦曲线>y=cos(x*pi/15)>matplot(x,y,pch=21)#绘制数学图形其他高级绘图函数>attach(mtcars)#以mtcars为例>hist(wt)#绘制直方图>boxplot(wt)#绘制箱线图>bardata<-table(cyl,carb)>#绘制条形图>barplot(bardata,beside=TRUE)>pie(table(cyl))#绘制饼图>detach(mtcars)#wt:重量,cyl:气缸数,carb:化油器数量#table函数用于记录频数(列联表)详见后面章节图形中的元素颜色、文字、点、线、坐标轴、主标题、副标题、轴标题、图例低级绘图函数低级绘图函数:颜色>plot(c(1:9),type='b',col='black')>text(6,5,labels='文字',col='red')>points(2,5,col='blue')设置颜色:在函数中使用参数‘col=颜色名’来设置颜色colors()函数:显示R语言中所有可用的657种固定颜色名低级绘图函数:颜色>colors()[1:20][1]'white''aliceblue''antiquewhite''antiquewhite1''antiquewhite2'[6]'antiquewhite3''antiquewhite4''aquamarine''aquamarine1''aquamarine2'[11]'aquamarine3''aquamarine4''azure''azure1''azure2'[16]'azure3''azure4''beige''bisque''bisque1'>pdf(‘colors-bar.pdf’,height=120)#在工作目录下自动生成空文件>par(mar=c(0,10,3,0)+0.1,yaxs='i')#设置公共图形参数
>#绘制条形图>barplot(rep(1,length(colors())),col=rev(colors()),+names.arg=rev(colors()),horiz=T,las=1,+xaxt='n’,main=expression('Barsofcolorsin'~italic(colors())))>dev.off()#关闭基于文件的图形设备,即完成文件的写入示例:将颜色名称及其对应的颜色输出在一个PDF文件中。低级绘图函数:颜色低级绘图函数:颜色>barplot(c(1:5))>barplot(c(1:5),col=c('red','white','blue','black','orange'))使用rgb函数,通过数值设置颜色。
低级绘图函数:颜色>plot(c(1:9),type='b',col='black')>text(6,5,labels='文字',col=newCol)>newCol<-rgb(red=126,green=255,blue=211,max=255)rainbow():彩虹系列颜色低级绘图函数:颜色调色板特定颜色主题的配色方案>barplot(rep(1,41),+col=c(rainbow(n=6,start=0,end=1/6),'white',+rainbow(n=6,start=1/6,end=2/6),'white’,+ rainbow(n=6,start=2/6,end=3/6),'white’,+ rainbow(n=6,start=3/6,end=4/6),'white’,+ rainbow(n=6,start=4/6,end=5/6),'white',+rainbow(n=6,start=5/6,end=1)))>axis(side=1,at=seq(from=3,length.out=6,by=8.5),+labels=c('赤色','黄色','绿色','青色','蓝色','紫色’),cex=0.75)>par(mfrow=c(2,2))#设置显示图形的行和列数>barplot(rep(1,6),col=heat.colors(6),main='col=heat.colors(6))')>barplot(rep(1,6),col=terrain.colors(6),main='col=terrain.colors(6))')>barplot(rep(1,6),col=topo.colors(6),main='col=topo.colors(6))')>barplot(rep(1,6),col=cm.colors(6),main='col=cm.colors(6))')>par(mfrow=c(1,1))#恢复其他主题配色:heat.colors()、terrain.colors()、topo.colors()、cm.colors()等低级绘图函数:颜色调色板使用brewer.pal()函数生成颜色配色方案:连续型(seq):生成一系列连续渐变的颜色,可标记连续型数值的大小。极端型(div):生成用深色强调两端、浅色标示中部的系列颜色,可标记数据中的离群点。离散型(qual):生成一系列彼此差异比较明显的颜色,通常用来标记分类数据。颜色扩展包:RColorBrewer颜色扩展包:RColorBrewer>library(RColorBrewer)>display.brewer.all(type='seq')>#使用YlOrRd组的第3~8种颜色>barplot(rep(1,6),+col=brewer.pal(9,'YlOrRd')[3:8])颜色-赏析RColorBrewer包中连续型系列颜色:共18组,每组9个渐变颜色。颜色-赏析RColorBrewer包中的极端型系列颜色:共9组,每组11个渐变颜色。>library(RColorBrewer)>display.brewer.all(type='div')>#使用BrBG组的第3~8种颜色>barplot(rep(1,6),+col=brewer.pal(11,'BrBG')[3:8])颜色-赏析RColorBrewer包中离散型系列颜色:共8组,每组多个渐变颜色。>library(RColorBrewer)>display.brewer.all(type='qual')设置颜色:在函数中使用参数'col=颜色名'来设置colors():查看颜色名rgb():
通过数值设置颜色颜色调色板:rainbow()等颜色扩展包:RColorBrewer连续型(seq)、极端型(div)、离散型(qual)系列颜色低级绘图函数:颜色小结text()函数参数font:分别用1、2、3、4表示正常体、粗体、斜体和粗斜体低级绘图函数:文字文字元素可以设置的参数:字体(font)、颜色(col)、大小(缩放倍数cex)等。>plot(c(0:5),col='white')>text(2,4,labels='font=1:正常字体(默认)',font=1)>text(3,3,labels='font=2:粗体字体',font=2)>text(4,2,labels='font=3:斜体字体',font=3)>text(5,1,labels='font=4:粗斜体字体',font=4)点元素可以设置的参数:样式(pch)、颜色(col)、大小(缩放倍数cex)等。points()函数主要参数低级绘图函数:点参数描述pch点的样式,取整数0-25或字符'*','、','.','o','O','0','+','-','|'等cex点的大小,1(默认)表示不缩放,小于1表示缩放,大于1表示放大col点边框填充的颜色bg点内部填充的颜色,仅限21-25样式的点lwd点边框的宽度,1(默认)表示正常宽度,小于1表示缩放,大于1表示放大>plot(1,col='white',xlim=c(1,9),ylim=c(1,7))>for(iinc(0:25)){#循环在x、y位置放置点+x<-(i%/%5)*1+1+y<-6-(i%%5)+if(length(which(c(21:25)==i)>=1)){+points(x,y,pch=i,bg='red',cex=2)+}else{+points(x,y,pch=i,cex=2)+}+#21-25可以设置背景颜色+text(x+0.2,y+0.2,labels=paste('pch=',i))+}低级绘图函数:点低级绘图函数:线曲线:lines()函数、直线:abline()函数、线段:segments()函数类型形式说明直线abline(a,b)绘制y=a+bx直线水平线abline(h=y)绘制水平直线垂直线abline(v=x)绘制垂直直线线性模型回归直线abline(lm,obj)绘制lm函数的回归直线模型lines():灵活绘制线abline():绘制直线线条样式(lty)低级绘图函数:线线可以设置的参数:线条样式(lty)、颜色(col)、粗细(lwd)等数值字符串说明数值字符串说明0'black'不画线4'dot-dash'点画线1'solid'实线5'longdash'长画线2'dashed'虚线6'twodash'点长画线3'dotted'点线
>data<-matrix(rep(rep(1:7),10),ncol=10,nrow=7)>plot(data[1,],type='l',lty=0,ylim=c(1,8),xlim=c(-1,10),axes=F)>text(0,1,labels='lty=0')>for(iinc(2:7)){+lines(data[i,],lty=i-1)+text(0,i,labels=paste('lty=',i-1))+}低级绘图函数:线示例:查看lty参数取值为0~6时的样式>data<-matrix(rep(rep(1:6),10),ncol=10,nrow=6)>plot(data[1,],type='l',lwd=0.5,ylim=c(1,8),xlim=c(-1,10),axes=F)>text(0,1,labels='lwd=0.5')>lines(data[2,],type='l',lwd=0.8);text(0,2,labels='lwd=0.8')>lines(data[3,],type='l',lwd=1);text(0,3,labels='lwd=1')>lines(data[4,],type='l',lwd=1.5);text(0,4,labels='lwd=1.5')>lines(data[5,],type='l',lwd=2);text(0,5,labels='lwd=2')>lines(data[6,],type='l',lwd=4);text(0,6,labels='lwd=4')低级绘图函数:线示例:查看线条宽度lwd(默认为1不缩放,小于1时缩小,大于1时放大)lines()函数,可通过散点样本的坐标绘制任意曲线。低级绘图函数:线>#drawasmoothlinethroughascatterplot>plot(cars,main='StoppingDistanceversusSpeed')>lines(stats::lowess(cars))#绘制局部加权回归(lowess)平滑曲线标题:包括主标题、副标题、x轴标题、y轴标题。title()函数低级绘图函数:标题参数说明实例main主标题main='主标题'main=list('主标题',font=3,col='red',cex=1.5)sub副标题sub=list('副标题',font=3,col='red',cex=1.2)xlabx轴标题xlab=list('x轴标题,font=3,col='red',cex=0.75)ylaby轴标题ylab=list('y轴标题,font=3,col='red',cex=0.75)>data<-data.frame(pre=c(113,134,123,145,137,196,187),+now=c(129,122,134,149,146,215,208))>mycol=c('azure4','brown4')>barplot(as.matrix(rbind(data$pre,data$now)),+beside=TRUE,ylim=c(0,550),col=mycol,axes=F,+main=list('本周趋势分析图',cex=1.5,col='red',font=3),+sub=paste('数据来源:某电商网站'),+ylab='网站日页面浏览量')>axis(2)低级绘图函数:标题示例:在绘图函数中直接设置参数>data<-data.frame(pre=c(113,134,123,145,137,196,187),+now=c(129,122,134,149,146,215,208))>mycol=c('azure4','brown4')>barplot(as.matrix(rbind(data$pre,data$now)),+beside=TRUE,ylim=c(0,ylim.max),col=mycol,axes=F)>title(main=list('本周趋势分析图’,+cex=1.5,col='red',font=3),+sub='数据来源:某电商网站'),+ylab='网站日页面浏览量')>axis(2)低级绘图函数:标题示例:通过title()函数设置参数当图形中包含多组数据时,图例可以帮助辨别legend()函数低级绘图函数:图例>text.legend<-c('上周','本周')>legend('top',pch=c(15,15),+legend=text.legend,+col=mycol,horiz=TRUE)坐标轴:主坐标轴(x轴和y轴),副坐标(右侧的纵坐标)axis()函数:可在上、下、左、右4个边上设置坐标轴范围/刻度标记等grid()函数:网格线低级绘图函数:坐标轴>x.text=c("1月","2月","3月","4月","5月","6月","7月",+"8月","9月","10月","11月","12月")>sales.volume=c(150000,190000,180000,92000,68000,90000,+56000,186000,100000,89000,90000,150000)>plot(sales.volume,type="b",ylim=c(20000,250000),xaxt="n",+main="月销量趋势图",xlab="月份",ylab="销量(元)")>axis(1,at=1:12,labels=x.text,tick=FALSE)>grid(nx=NA,ny=8,lwd=1,lty=2,col="blue")使用par()或layout()函数组合多幅图形为一幅图形图形组合参数描述mfrow/mfcol页面摆放,把一个页面平分成多行和多列,mfrow从左到右作图,mfcol从上到下作图mai/mar图形边距,mai(英寸边距)和mar(行边距),四个边距的顺序是下、左、上、右mgp坐标轴位置,依次为标题、刻度标签和刻度的位置oma外边界宽度;类似mar,默认为c(0,0,0,0)在RStudio集成开发环境中,生成的图形将直接显示在界面右侧。还可以通过函数windows()和X11()将图片输出到屏幕,windows()用于Windows系统,X11()用于UNIX类型系统的桌面系统。图形保存输出到屏幕>windows()#打开图形设备界面>plot(iris[,1],iris[,2])#数据集中第1和第2列的数据集合>X11()#打开图形设备界面>plot(iris[,3],iris[,4])数据集中第3和第4列数据集合图形保存输出到文件(多种文件格式)>pdf(“filename.pdf”)>png(“filename.png”)>jpeg(“filename.jpeg”)>bmp(“filename.bmp”)#自动生成准备保存图形的空文件,默认在工作目录下。>pdf(“p.pdf”)>plot(iris[,3],iris[,4])#生成图形,不显示在屏幕中>dev.off()#将图形写入基于文件的设备中,结束关联R基本绘图包:graphics高级绘图函数:plot()函数,直方图、密度图、箱线图、饼图、散点图……低级绘图函数:颜色,点,文本,线条,图例,坐标轴……图形组合和保存练习:熟悉本章节示例代码,掌握常用绘图函数的用法。使用数据集,通过绘制图形了解数据关系。小结绘图进阶R拓展绘图包:ggplot2包图形是由从数据到几何对象、图形属性的映射包括统计变换的丰富函数支持qplot():类似plot()函数ggplot():将数据与图形分离,按图层作图,用“+”号连接函数绘制更丰富的图形其他第三方绘图包目录图形是由从数据到几何对象、图形属性的映射。提供丰富的函数图形属性函数(aestheticattributes):aes()几何对象函数(geometricobject):geom_XXX()
统计变换函数(statisticaltransformation):stat_XXX()
标度绘图函数:scale_XXX()其它修饰函数:标题、图例、分面等。ggplot2绘图包几何绘图函数几何绘图函数描述geom_area面积图(连续的条形图)geom_bar条形图geom_boxplot箱线图geom_contour等高线图geom_density密度图geom_errorbar误差线geom_histogram直方图geom_jitter点图(自动添加扰动)geom_line线geom_point散点图geom_text文本geom_XXX()统计绘图函数统计绘图函数描述stat_abline添加线条,用斜率和截距表示stat_boxplot绘制带触须的箱线图stat_contour绘制三维数据的等高线图stat_density绘制密度图stat_density2d绘制二维密度图stat_function添加函数曲线stat_hline添加水平线stat_smooth添加平滑曲线stat_sum绘制不重复的取值之和stat_summary绘制汇总数据stat_XXX()功能:快速作图(quickplot)使用方法与plot()函数类似常用函数:qplot()>library(ggplot2)>qplot(Sepal.Length,Sepal.Width,data=iris,colour=Species,shape=Species,+main=”花萼长度和宽度散点图”)>qplot(Species,Sepal.Length,data=iris,geom=”boxplot”,fill=Species,+main=“不同种类的花萼长度箱线图”)>qplot(Species,Sepal.Length,data=iris,geom=c(“violin”,”jitter”),+fill=Species,main=”不同种类的花萼长度小提琴图”)ggplot()函数:生成精美复杂的图形数据与图形分离,按图层作图。使用ggplot()函数初始化图形,用“+”连接函数,构成新图层。常用函数:ggplot()>library(ggplot2)>help(ggplot)常用函数:ggplot()>P<-ggplot(iris,aes(x=Sepal.Length,y=Sepal.Width,colour=Species))data=irisaes(x=Sepal.Length,y=Sepal.Width,colour=Species)aes:将数据映射到图形属性中x,y:数据对坐标轴的映射colour:数据对颜色的映射>P<-P+geom_point()#通过“+”增加图层geom_point():几何绘图函数-散点图常用函数:ggplot()>P<-ggplot(iris,aes(x=Sepal.Length,y=Sepal.Width,colour=Species))>P<-P+geom_point()#通过“+”增加图层初始化图形通过+geom_XXX函数增加图层>P<-ggplot(iris,aes(x=Sepal.Length,y=Sepal.Width,colour=Species))>P<-P+geom_point(size=3)>P<-P+scale_color_manual(values=c("orange","olivedrab","navy"))>ggsave(file="hello.jpg",width=5,height=4)常用函数:ggplot()示例:改变缺省颜色,保存图形>P<-ggplot(iris,aes(x=Species,y=Sepal.Length,fill=Species))>P<-P+geom_boxplot()>P<-P+labs(title="Species")常用函数:ggplot()示例:生成箱线图常用函数:ggplot()示例:生成小提琴图>P<-ggplot(iris,aes(x=Species,y=Sepal.Length,fill=Species))>P<-P+geom_violin()>P<-P+labs(title="Speciesviolin")常用函数:ggplot()示例:生成密度图>P<-ggplot(data=singer,+aes(x=height,fill=voice.part))>P<-P+geom_density()>P<-P+facet_grid(voice.part~.)facet_grid():图形的组合绘制3D图形:plot3D包,plotly包,scatterplot3d包,等绘制交互式Web图形:rCharts包,htmlwidgets包,等绘制地图:leaflet包,maps包,等绘制特殊的图形:气泡图、茎叶图、脸谱图、相关图等第三方绘图包示例:绘制3D图形>install.packages("plot3D")#下载plot3D包>library(plot3D)>x<-y<-seq(0,10,by=0.5)#生成[0,10]区间内数据的x,y向量>xy<-mesh(x,y)#利用包中的mesh()函数生成网格数据,得到列表xy>z<-sin(xy$x)+cos(xy$y)+sin(xy$x)*cos(xy$y)#计算z的网格数据>hist3D(x,y,z,phi=45,theta=45,space=0.1,clokey=F,bty="g")#绘制3D直方图>surf3D(xy$x,xy$y,z,colkey=F,border="black",bty="b2")#绘制3D曲面图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年车辆以租代购产权转移协议版B版
- 2024版地下室防水施工协议3篇
- 专业喷漆团队修理厂承包合同书版B版
- 2025年度网络安全防护合同范本:信息安全合作协议3篇
- 2024废钢居间合同范本
- 2024重庆市民离婚协商一致合同样本版B版
- 行车理论知识培训课件
- 2024年高速公路交通信号灯施工合同
- 熟食类食品知识培训课件
- 铝挤压修模知识培训课件
- 《安全记心中平安伴我行》课件2024年五一假期安全教育主题班会
- 2024年四川省成都市锦江区中考数学一诊试卷(附答案解析)
- 小学生中医药文化知识科普传承中医文化弘扬国粹精神课件
- 形象权授权协议
- 高中数学人教A版(2019)必修第一册第二册知识点概要填空
- 2023-2024学年山东省聊城市阳谷县八年级(上)期末英语试卷
- 2024-2030全球与中国吹灌封一体化产品市场现状及未来发展趋势
- 2024年保安员考试题库及参考答案(巩固)
- 安全隐患规范依据查询手册22大类12万字
- 大中小学心理健康教育一体化共同体建设研究课题评审书
- JJG 701-2008熔点测定仪行业标准
评论
0/150
提交评论