当前位置:   article > 正文

R软件基础2_r语言中par中mgp

r语言中par中mgp

一、自定义绘图

  1. #1初级绘图
  2. oldpar=par(pin=c(5,2),mai=c(0.6,0.6,0.6,0.1))#设置图的尺寸宽5高2和边界,单位:英寸
  3. plot(1:10,1:10,type='n',main='主标题',sub='副标题',xlab='',ylab='',
  4. xlim=c(0,15),ylim=c(0,10),frame.plot=TRUE,axes=FALSE,
  5. mgp=c(2.3,1,0),cex.main=1,cex.sub=0.8)
  6. #plot(x=x轴数据,y=y轴数据,main="标题",sub="子标题",type="线型(p点,l线,o点或线)",
  7. #xlab="x轴名称",ylab="y轴名称",xlim = c(x轴范围,x轴范围),ylim = c(y轴范围,y轴范围)
  8. #cex.main 标题的缩放倍数。类似于cex;cex.sub 副标题的缩放倍数。类似于cex,
  9. #axes=FALSE表示plot不自动生成x,y坐标轴,frame.plot=TRUE需要画作图区域的框线
  10. #mgp默认值为c(3, 1, 0),三个数字分别代表坐标轴标题、刻度值和轴线与绘图边框的距离;)
  11. lines(c(1,11),c(8,8),lty=2)
  12. lines(c(1,11),c(6,6),lty=3)
  13. lines(c(1,11),c(4,4),lty=1)
  14. #指定位置输出图例
  15. legend(12.5,10,c("线1","线2","线3"),lty=c(2,3,1),cex=0.75)
  16. #x坐标轴(1,2,3,4分别表示底部,左侧,顶部,右侧)
  17. axis(1,0:15,labels = 0:15,cex=0.75,padj = -0.5)
  18. #y坐标轴,padi表示label偏离刻度线的大致距离
  19. axis(2,0:10,labels = 0:10,cex=0.75,padj = 0.5)
  20. #x轴标签右对齐
  21. title(xlab = 'x轴标签',adj=1,mgp=c(2.0,1,0),cex=0.75)
  22. #y轴标签右对齐
  23. title(ylab = 'y轴标签',adj=1,mgp=c(2.0,1,0),cex=0.75)
  24. #在图形指定位置输出文本
  25. text(7,3,'四周边线以内:作图区域')
  26. text(7,2,'四周边线以外:四个边距')
  27. par(oldpar)

  1. #2旋转文本输出 text
  2. par(mai=c(0,0,0,0))
  3. plot(-10:10,-10:10,type='n',main='',sub='',xlab='',ylab='',axes=FALSE)
  4. for (i in 1:12) {
  5. text(0,0,srt=i*30,'统计软件R',adj=1.25,cex=0.85)#产生左侧图
  6. }
  7. plot(-10:10,-10:10,type='n',main='',sub='',xlab='',ylab='',axes=FALSE)
  8. for (i in 1:12) {
  9. text(0,0,srt=i*30,'统计软件R',adj=1.25,cex=0.85)#产生右侧图
  10. }

  1. #3在作图区域外输出文本metext
  2. #side表示文本方位,1,2,3,4对应下边,左边,上边和右边
  3. #adj表示对齐方式,0,0.5,1分别对应左对齐,居中和右对齐
  4. #line表示字符间距
  5. plot(1:100)
  6. metext("right margin",side=4,adj=0.5,line=0.5)
  7. metext("top margin",side=3,adj=0,line=1)

  1. #4常规几何平面图
  2. par(mai=c(0.1,0.1,0.1,0.1))#设置图的边界,单位:英寸
  3. plot(-1:1,type='n',main='',sub='',xlim=c(-1,1.2),ylim=c(-0.2,2.5),
  4. frame.plot=FALSE,axes=FALSE,cex.sub=1,xlab = '',ylab = '',
  5. mgp=c(0.1,0.05,0))
  6. axis(1,at=seq(-1,1),labels = seq(-1,1),pos=0,hadj=1.5,mgp=c(0.6,0.05,0))
  7. axis(2,seq(1,2),labels = seq(1,2),pos=0,mgp=c(0.6,0.4,0),hadj = 1,las=1)
  8. #h为水平线的y值,v为垂直线的x值
  9. abline(h=0); abline(v=0);lines(c(-1,0),c(0,2));
  10. text(-0.7,1.5,'y=2x+2');text(-0.2,2.4,'y');text(1.2,-0.2,'x')
  11. arrows(0,2.2,0,2.5,length = 0.08);arrows(0.8,0,1.2,0,length = 0.08)

  1. #5为图形添加网格线
  2. x=seq(-pi,pi,by=0.1)
  3. #nx/ny表示在x,y方向上的单元格数
  4. plot(x,sin(x),type='l')
  5. grid(nx=4,ny=6,lwd=1,col = 'red')

  1. #6数学标注
  2. x=seq(-pi,pi,by=0.1)
  3. plot(x,sin(x^2)+exp(0.1*x),type='l',main='',ylab='')
  4. title(main = expression(y==sin(x^2)+e^(0.1*x)))

  1. #7指定图形窗口尺寸
  2. win.graph(width = 5,height = 3,pointsize = 8)
  3. plot(1:10,11:20)
  1. #8打开新的图形窗口
  2. for(i in 1:5) dev.new()#产生一个图形设备
  3. dev.list(); dev.cur();
  4. #dev.list()列出所有图形设备编号,dev.cur()获取当前图形设备编号
  5. dev.set(2);plot(1:10);dev.cur();dev.off()
  6. graphics.off()

二、高级绘图

1常用绘图函数

  1. #1常用绘图函数
  2. #plot(f) f如果是因子,则产生直方图
  3. f=as.factor(rbinom(40,9,0.5))
  4. plot(f)
  5. #plot(f) f如果是数据框,则产生散点图
  6. df=data.frame(x=rnorm(10),y=rt(10,5),z=rnorm(10,2,4))
  7. plot(df)

  1. #coplot(expr,data=df)用来显示多元数据之间的条件散点图
  2. #df是数据框变量或者矩阵
  3. df=data.frame(hei=rnorm(50,130,10),wei=rnorm(50,30,9),
  4. grade=as.factor(sample(3:6,50,replace = TRUE)),
  5. class=as.factor(sample(1:3,50,replace = TRUE)))
  6. coplot(wei~hei|grade,data=df)
  7. coplot(wei~hei|grade+class,data=df)

  1. #dotchart(x,...)将绘制数值矩阵x的特殊点图,y轴显示矩阵的行标题
  2. #x轴显示矩阵每列的数值,按列的顺序从左到右,将各列散点图自上而下地绘制到分列点图中
  3. #这个图形特别适合相同分类指标的多组数据的直观比较
  4. #构造一个具有4个指标的6组数据,指标名为A,B,C,D,数据名为group1~group6
  5. n=4
  6. mat=cbind(group1=rnorm(n,80,9),group2=rnorm(n,90,9),
  7. group3=rnorm(n,70,4),group4=rnorm(n,85,2),
  8. group5=rnorm(n,95,3),group6=rnorm(n,75,4))
  9. rownames(mat)=c('A','B','C','D');
  10. dotchart(mat)

2条形图

  1. #2条形图
  2. # barplot(height, width = 1, space = NULL,
  3. # names.arg = NULL, legend.text = NULL, beside = FALSE,
  4. # horiz = FALSE, density = NULL, angle = 45,
  5. # col = NULL, border = par("fg"),
  6. # main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
  7. # xlim = NULL, ylim = NULL, xpd = TRUE, log = "",
  8. # axes = TRUE, axisnames = TRUE,
  9. # cex.axis = par("cex.axis"), cex.names = par("cex.axis"),
  10. # inside = TRUE, plot = TRUE, axis.lty = 0, offset = 0,
  11. # add = FALSE, args.legend = NULL, ...)
  12. # density:底纹的密度。默认值为NULL。
  13. # angle:设置底纹的斜率。
  14. # xlim和ylim:设置图形x轴与y轴的范围。
  15. # xlab和ylab:设置x轴与y轴的lable。
  16. # axes:逻辑参数。设置图形是否显示x轴或y轴。
  17. # plot:逻辑参数。设置是否显示条形图。
  18. # beside:逻辑参数。如果FALSE,那么将绘画堆叠式的条形;如果是TRUE,将绘画并列式条形。
  19. # cex.axis:设置坐标轴数值的膨胀率。比如cex.axis=1.5。
  20. # cex.names:设置条形标签(bar labels)的膨胀率。比如cex.axis=1.5.
  21. # col:设置条形底纹或者填充颜色。
  22. # border:设置条形边缘颜色。如果设置为NA,则消除了边缘。
  23. # width:设置条形的宽度。
  24. # axis.lty:设置x轴的类型(类似lty)。默认axis.lty=0.
  25. # names.arg:设置条形标签(bar labels)。
  26. # horiz:逻辑参数。设置图形是水平或是垂直。
  27. # space:设置各个条形间的宽度。相当于各个条形宽度的一部分。
  28. # axisnames:逻辑参数。设置是否显示条形标签。
  29. # 实例演习:
  30. # 使用R软件自带数据VADeaths
  31. #低维数据的条形图绘制
  32. d=rbinom(20,10,0.4)
  33. barplot(table(d),main = 'barplot(table(d))')

  1. #多维数据的条形图绘制
  2. barplot(VADeaths,beside = TRUE,main = 'beside=TRUE')
  3. barplot(VADeaths,main = 'beside=FALSE')

3箱线图

  1. #3箱线图
  2. #一维箱线图
  3. X=rnorm(100);#horizontal表示是否水平绘制,notch表示是否绘制切口形状
  4. boxplot(X)
  5. boxplot(X,horizontal = TRUE)
  6. boxplot(X,notch=TRUE)

  1. #多维数据的箱线图
  2. x=matrix(rnorm(100),ncol=4)
  3. boxplot(x)
  4. boxplot(x,horizontal=TRUE)

4三维图形显示

  1. #4三维图形显示
  2. outer(1:3,1:8,FUN="*")#外积运算
  3. outer(1:3,1:8,function(x,y) 0.5*x*y) #自定义函数
  4. # > outer(1:3,1:8,FUN="*")#外积运算
  5. # [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
  6. # [1,] 1 2 3 4 5 6 7 8
  7. # [2,] 2 4 6 8 10 12 14 16
  8. # [3,] 3 6 9 12 15 18 21 24
  9. # > outer(1:3,1:8,function(x,y) 0.5*x*y) #自定义函数
  10. # [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
  11. # [1,] 0.5 1 1.5 2 2.5 3 3.5 4
  12. # [2,] 1.0 2 3.0 4 5.0 6 7.0 8
  13. # [3,] 1.5 3 4.5 6 7.5 9 10.5 12
  1. #利用数据集中的volcano数据绘制image图形
  2. image(t(volcano)[ncol(volcano):1,])#彩色
  3. image(t(volcano)[ncol(volcano):1,],col=grey((0:32)/32))#灰色

  1. #画等高线图
  2. x=-6:16
  3. contour(outer(x,x),method="edge",vfont=c("sans serif","plain"))

  1. #3D曲面图
  2. x=seq(-3,3,by=0.2)
  3. z=outer(x,x,FUN=function(x,y) exp(-(x^2+y^2)/2)/(2*pi))#二维正态密度图
  4. persp(x,x,z,theta = 30,phi=5,expand = 0.7)

  1. #3D散点图, 以软件包scatterplot3d中的scatterplot3d()函数为例
  2. attach(mtcars)
  3. scatterplot3d(wt,disp,mpg,main='简单3D散点图')

  1. #对scatterplot3d增加highlight.3d,type,pch等参数,还可以增加回归超平面,使得图形更加直观
  2. par(mfrow=c(1,3))#一个图版显示1行3列
  3. # 其中,通过设定函数par()的各个参数来调整图形
  4. # mfrow=c(2,2) 是画4幅图,
  5. # mfrow=c(3,5),是画15幅图,
  6. # 例如 par(mfrow=c(2,3)) 一个图版显示2行,3列
  7. scatterplot3d(wt,disp,mpg,highlight.3d=TRUE,type='h',main='简单3D散点图')
  8. scatterplot3d(wt,disp,mpg,highlight.3d=TRUE,type='h',pch=16,main='简单3D散点图')
  9. my3d=scatterplot3d(wt,disp,mpg,highlight.3d=TRUE,type='h',pch=16,main='简单3D散点图')
  10. fit=lm(mpg~wt+disp)
  11. my3d$plane3d(fit)

  1. #可以任意旋转的3D图
  2. #软件包rgl可以将三维数据以3D形式展示,使用鼠标可以任意旋转3D图像
  3. #实现空间数据的全方位透视
  4. #主要使用plot3d()函数
  5. f=function(x,y){ r<-sqrt(x^2+y^2);ifelse(r==0,10,10*sin(r)/r)}
  6. open3d()
  7. plot3d(f,col=colorRampPalette(c("blue","white","red")),xlab="X",
  8. ylab = "Y",zlab = "Sinc(r)",xlim = c(-10,10),ylim = c(-10,10),aspect = c(1,1,0.5))

5 lattice软件包,提供的函数适用于多变量数据集绘图

  1. #histogram(~x|y)函数绘制y分类的x直方图
  2. histogram(~iris[,1]|iris[,5],layout=c(3,1))

 

 

 

  1. X=sample(c('A','B','C'),size = 150,replace = TRUE)
  2. #bwplot绘制分组箱线图
  3. bwplot(iris[,5]~iris[,1]|X,layout=c(3,1))

 

  1. #xyplot绘制二元图
  2. #auto.key = list(corner=c(1,1)表示图例放置在右上角
  3. #type=c('p','smooth')指定图的类型,p表示散点,smooth表示光滑曲线
  4. #groups指定分组变量
  5. xyplot(iris[,2]~iris[,1],auto.key = list(corner=c(1,1)),
  6. type=c('p','smooth'),groups = iris[,5])

 

三、多图及特殊图形

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/66075
推荐阅读
相关标签
  

闽ICP备14008679号