赞
踩
- #1初级绘图
-
- oldpar=par(pin=c(5,2),mai=c(0.6,0.6,0.6,0.1))#设置图的尺寸宽5高2和边界,单位:英寸
- plot(1:10,1:10,type='n',main='主标题',sub='副标题',xlab='',ylab='',
- xlim=c(0,15),ylim=c(0,10),frame.plot=TRUE,axes=FALSE,
- mgp=c(2.3,1,0),cex.main=1,cex.sub=0.8)
- #plot(x=x轴数据,y=y轴数据,main="标题",sub="子标题",type="线型(p点,l线,o点或线)",
- #xlab="x轴名称",ylab="y轴名称",xlim = c(x轴范围,x轴范围),ylim = c(y轴范围,y轴范围)
- #cex.main 标题的缩放倍数。类似于cex;cex.sub 副标题的缩放倍数。类似于cex,
- #axes=FALSE表示plot不自动生成x,y坐标轴,frame.plot=TRUE需要画作图区域的框线
- #mgp默认值为c(3, 1, 0),三个数字分别代表坐标轴标题、刻度值和轴线与绘图边框的距离;)
- lines(c(1,11),c(8,8),lty=2)
- lines(c(1,11),c(6,6),lty=3)
- lines(c(1,11),c(4,4),lty=1)
- #指定位置输出图例
- legend(12.5,10,c("线1","线2","线3"),lty=c(2,3,1),cex=0.75)
- #x坐标轴(1,2,3,4分别表示底部,左侧,顶部,右侧)
- axis(1,0:15,labels = 0:15,cex=0.75,padj = -0.5)
- #y坐标轴,padi表示label偏离刻度线的大致距离
- axis(2,0:10,labels = 0:10,cex=0.75,padj = 0.5)
- #x轴标签右对齐
- title(xlab = 'x轴标签',adj=1,mgp=c(2.0,1,0),cex=0.75)
- #y轴标签右对齐
- title(ylab = 'y轴标签',adj=1,mgp=c(2.0,1,0),cex=0.75)
- #在图形指定位置输出文本
- text(7,3,'四周边线以内:作图区域')
- text(7,2,'四周边线以外:四个边距')
- par(oldpar)
- #2旋转文本输出 text
- par(mai=c(0,0,0,0))
- plot(-10:10,-10:10,type='n',main='',sub='',xlab='',ylab='',axes=FALSE)
- for (i in 1:12) {
- text(0,0,srt=i*30,'统计软件R',adj=1.25,cex=0.85)#产生左侧图
- }
- plot(-10:10,-10:10,type='n',main='',sub='',xlab='',ylab='',axes=FALSE)
- for (i in 1:12) {
- text(0,0,srt=i*30,'统计软件R',adj=1.25,cex=0.85)#产生右侧图
- }
- #3在作图区域外输出文本metext
- #side表示文本方位,1,2,3,4对应下边,左边,上边和右边
- #adj表示对齐方式,0,0.5,1分别对应左对齐,居中和右对齐
- #line表示字符间距
- plot(1:100)
- metext("right margin",side=4,adj=0.5,line=0.5)
- metext("top margin",side=3,adj=0,line=1)
-
- #4常规几何平面图
- par(mai=c(0.1,0.1,0.1,0.1))#设置图的边界,单位:英寸
- plot(-1:1,type='n',main='',sub='',xlim=c(-1,1.2),ylim=c(-0.2,2.5),
- frame.plot=FALSE,axes=FALSE,cex.sub=1,xlab = '',ylab = '',
- mgp=c(0.1,0.05,0))
-
- axis(1,at=seq(-1,1),labels = seq(-1,1),pos=0,hadj=1.5,mgp=c(0.6,0.05,0))
- axis(2,seq(1,2),labels = seq(1,2),pos=0,mgp=c(0.6,0.4,0),hadj = 1,las=1)
- #h为水平线的y值,v为垂直线的x值
- abline(h=0); abline(v=0);lines(c(-1,0),c(0,2));
- text(-0.7,1.5,'y=2x+2');text(-0.2,2.4,'y');text(1.2,-0.2,'x')
- arrows(0,2.2,0,2.5,length = 0.08);arrows(0.8,0,1.2,0,length = 0.08)
- #5为图形添加网格线
- x=seq(-pi,pi,by=0.1)
- #nx/ny表示在x,y方向上的单元格数
- plot(x,sin(x),type='l')
- grid(nx=4,ny=6,lwd=1,col = 'red')
- #6数学标注
- x=seq(-pi,pi,by=0.1)
- plot(x,sin(x^2)+exp(0.1*x),type='l',main='',ylab='')
- title(main = expression(y==sin(x^2)+e^(0.1*x)))
- #7指定图形窗口尺寸
- win.graph(width = 5,height = 3,pointsize = 8)
- plot(1:10,11:20)
- #8打开新的图形窗口
- for(i in 1:5) dev.new()#产生一个图形设备
- dev.list(); dev.cur();
- #dev.list()列出所有图形设备编号,dev.cur()获取当前图形设备编号
- dev.set(2);plot(1:10);dev.cur();dev.off()
- graphics.off()
- #1常用绘图函数
- #plot(f) f如果是因子,则产生直方图
- f=as.factor(rbinom(40,9,0.5))
- plot(f)
- #plot(f) f如果是数据框,则产生散点图
- df=data.frame(x=rnorm(10),y=rt(10,5),z=rnorm(10,2,4))
- plot(df)
- #coplot(expr,data=df)用来显示多元数据之间的条件散点图
- #df是数据框变量或者矩阵
- df=data.frame(hei=rnorm(50,130,10),wei=rnorm(50,30,9),
- grade=as.factor(sample(3:6,50,replace = TRUE)),
- class=as.factor(sample(1:3,50,replace = TRUE)))
- coplot(wei~hei|grade,data=df)
- coplot(wei~hei|grade+class,data=df)
- #dotchart(x,...)将绘制数值矩阵x的特殊点图,y轴显示矩阵的行标题
- #x轴显示矩阵每列的数值,按列的顺序从左到右,将各列散点图自上而下地绘制到分列点图中
- #这个图形特别适合相同分类指标的多组数据的直观比较
- #构造一个具有4个指标的6组数据,指标名为A,B,C,D,数据名为group1~group6
- n=4
- mat=cbind(group1=rnorm(n,80,9),group2=rnorm(n,90,9),
- group3=rnorm(n,70,4),group4=rnorm(n,85,2),
- group5=rnorm(n,95,3),group6=rnorm(n,75,4))
- rownames(mat)=c('A','B','C','D');
- dotchart(mat)
-
- #2条形图
- # barplot(height, width = 1, space = NULL,
- # names.arg = NULL, legend.text = NULL, beside = FALSE,
- # horiz = FALSE, density = NULL, angle = 45,
- # col = NULL, border = par("fg"),
- # main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
- # xlim = NULL, ylim = NULL, xpd = TRUE, log = "",
- # axes = TRUE, axisnames = TRUE,
- # cex.axis = par("cex.axis"), cex.names = par("cex.axis"),
- # inside = TRUE, plot = TRUE, axis.lty = 0, offset = 0,
- # add = FALSE, args.legend = NULL, ...)
- # density:底纹的密度。默认值为NULL。
- # angle:设置底纹的斜率。
- # xlim和ylim:设置图形x轴与y轴的范围。
- # xlab和ylab:设置x轴与y轴的lable。
- # axes:逻辑参数。设置图形是否显示x轴或y轴。
- # plot:逻辑参数。设置是否显示条形图。
- # beside:逻辑参数。如果FALSE,那么将绘画堆叠式的条形;如果是TRUE,将绘画并列式条形。
- # cex.axis:设置坐标轴数值的膨胀率。比如cex.axis=1.5。
- # cex.names:设置条形标签(bar labels)的膨胀率。比如cex.axis=1.5.
- # col:设置条形底纹或者填充颜色。
- # border:设置条形边缘颜色。如果设置为NA,则消除了边缘。
- # width:设置条形的宽度。
- # axis.lty:设置x轴的类型(类似lty)。默认axis.lty=0.
- # names.arg:设置条形标签(bar labels)。
- # horiz:逻辑参数。设置图形是水平或是垂直。
- # space:设置各个条形间的宽度。相当于各个条形宽度的一部分。
- # axisnames:逻辑参数。设置是否显示条形标签。
- # 实例演习:
- # 使用R软件自带数据VADeaths
- #低维数据的条形图绘制
- d=rbinom(20,10,0.4)
- barplot(table(d),main = 'barplot(table(d))')
- #多维数据的条形图绘制
- barplot(VADeaths,beside = TRUE,main = 'beside=TRUE')
- barplot(VADeaths,main = 'beside=FALSE')
- #3箱线图
- #一维箱线图
- X=rnorm(100);#horizontal表示是否水平绘制,notch表示是否绘制切口形状
- boxplot(X)
- boxplot(X,horizontal = TRUE)
- boxplot(X,notch=TRUE)
- #多维数据的箱线图
- x=matrix(rnorm(100),ncol=4)
- boxplot(x)
- boxplot(x,horizontal=TRUE)
- #4三维图形显示
- outer(1:3,1:8,FUN="*")#外积运算
- outer(1:3,1:8,function(x,y) 0.5*x*y) #自定义函数
- # > outer(1:3,1:8,FUN="*")#外积运算
- # [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
- # [1,] 1 2 3 4 5 6 7 8
- # [2,] 2 4 6 8 10 12 14 16
- # [3,] 3 6 9 12 15 18 21 24
- # > outer(1:3,1:8,function(x,y) 0.5*x*y) #自定义函数
- # [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
- # [1,] 0.5 1 1.5 2 2.5 3 3.5 4
- # [2,] 1.0 2 3.0 4 5.0 6 7.0 8
- # [3,] 1.5 3 4.5 6 7.5 9 10.5 12
- #利用数据集中的volcano数据绘制image图形
- image(t(volcano)[ncol(volcano):1,])#彩色
- image(t(volcano)[ncol(volcano):1,],col=grey((0:32)/32))#灰色
- #画等高线图
- x=-6:16
- contour(outer(x,x),method="edge",vfont=c("sans serif","plain"))
- #3D曲面图
- x=seq(-3,3,by=0.2)
- z=outer(x,x,FUN=function(x,y) exp(-(x^2+y^2)/2)/(2*pi))#二维正态密度图
- persp(x,x,z,theta = 30,phi=5,expand = 0.7)
- #3D散点图, 以软件包scatterplot3d中的scatterplot3d()函数为例
- attach(mtcars)
- scatterplot3d(wt,disp,mpg,main='简单3D散点图')
- #对scatterplot3d增加highlight.3d,type,pch等参数,还可以增加回归超平面,使得图形更加直观
- par(mfrow=c(1,3))#一个图版显示1行3列
- # 其中,通过设定函数par()的各个参数来调整图形
- # mfrow=c(2,2) 是画4幅图,
- # mfrow=c(3,5),是画15幅图,
- # 例如 par(mfrow=c(2,3)) 一个图版显示2行,3列
- scatterplot3d(wt,disp,mpg,highlight.3d=TRUE,type='h',main='简单3D散点图')
- scatterplot3d(wt,disp,mpg,highlight.3d=TRUE,type='h',pch=16,main='简单3D散点图')
- my3d=scatterplot3d(wt,disp,mpg,highlight.3d=TRUE,type='h',pch=16,main='简单3D散点图')
- fit=lm(mpg~wt+disp)
- my3d$plane3d(fit)
- #可以任意旋转的3D图
- #软件包rgl可以将三维数据以3D形式展示,使用鼠标可以任意旋转3D图像
- #实现空间数据的全方位透视
- #主要使用plot3d()函数
- f=function(x,y){ r<-sqrt(x^2+y^2);ifelse(r==0,10,10*sin(r)/r)}
- open3d()
- plot3d(f,col=colorRampPalette(c("blue","white","red")),xlab="X",
- ylab = "Y",zlab = "Sinc(r)",xlim = c(-10,10),ylim = c(-10,10),aspect = c(1,1,0.5))
| |
---|---|
| |
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。