当前位置:天才代写 > tutorial > 其他教程 > R画图基本(一)机关颜色等——1

R画图基本(一)机关颜色等——1

2017-12-04 08:00 星期一 所属: 其他教程 浏览:405

一,机关

R画图所占的区域,被分成两大部门,一是外围边距,一是画图区域。

外围边距可利用par()函数中的oma来举办配置。好比oma=c(4,3,2,1),就是指外围边距别离为下边距:4行,左边距3行,上边距2
行,右边距1行。很明明这个配置顺序是从x轴开始顺时针偏向。这里的行是指可以显示1行普通字体。所以当我们利用mtext中的line参数时,配置的大
小就应该是[0,行数)的开区间。当我们利用mtext在外围边距上书写内容时,配置mtext中的outer=TRUE即可。

画图区域可利用par()函数中的mfrow, mfcol来举办机关。mfrow和mfcol可以利用画图区域被区分为多个区域。默认值为mfrow(1,1)。

好比mfrow(2,3)就是指将画图区域分成2行3列,并按行的顺序依次画图填充;
好比mfcol(3,2)就是指将画图区域分成3行2列,并按列的顺序依次画图填充;

我们将每一个细分的画图区域分为两个部门,一是画图边距,一是主画图。

画图边距需要容纳的内容有坐标轴,坐标轴标签,标题。凡是来讲,我们都只需要一个x轴,一个y轴,所以在配置时,一般的下边距和左边距城市大一些。
假如多个x轴可能y轴,才思量将上边距可能右边距放大一些。画图边距可以利用par()函数中mar来配置。好比mar=c(4,3,2,1),与外围边
距的配置雷同,是指画图边距别离为下边距:4行,左边距3行,上边距2行,右边距1行。很明明这个配置顺序是从x轴开始顺时针偏向。行的观念与之前的相
同。也可以利用mai来配置。mai与mar差异之处在于mai不是以行为单元,而是以inch为单元。

SOUTH<-1; WEST<-2; NORTH<-3; EAST<-4;
 
GenericFigure <- function(ID, size1, size2)
{
  plot(0:10, 0:10, type="n", xlab="X", ylab="Y")
  text(5,5, ID, col="red", cex=size1)
  box("plot", col="red")
  mtext(paste("cex",size2,sep=""), SOUTH, line=3, adj=1.0, cex=size2, col="blue")
  title(paste("title",ID,sep=""))
}
 
MultipleFigures <- function()
{
  GenericFigure("1", 3, 0.5)
  box("figure", lty="dotted", col="blue")
 
  GenericFigure("2", 3, 1)
  box("figure", lty="dotted", col="blue")
 
  GenericFigure("3", 3, 1.5)
  box("figure", lty="dotted", col="blue")
 
  GenericFigure("4", 3, 2)
  box("figure", lty="dotted", col="blue")
}
 
par(mfrow=c(2,2),mar=c(6,4,2,1),oma=c(4,3,2,1))
 
MultipleFigures()
 
box("inner", lty="dotted", col="green")
box("outer", lty="solid", col="green")
 
mtext("Outer Margin Area (oma) of South: 6", SOUTH, line=1, cex=1, outer=TRUE)
 
plotline<-function(n,direc){
  for(i in 0:n){
    mtext(paste("line",i,sep=""), direc, line=i, cex=1, col="black", adj=1, outer=TRUE)
  }
}
plotline(4,SOUTH)

R绘图根基(一)构造颜色等——1

R画图机关

可是,利用mfrow,mfcol只能是矩阵似的机关,假如我们需要简朴地实际犯科则的机关,那该怎么办呢?尚有强大的layout()专门用于机关。

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

个中,mat就是一个距阵,假设我们要画N个图,那么,mat就要描写每个图地址的位置,个中1…N-1都必需至少呈现过一次。好比有三个图,我们
但愿的机关是第一排有一个图,第二排有两个图,那么mat<-matrix(c(1,1,2,3), nrow=2, ncol=2, byrow
=
TRUE);假如但愿第一排有两个图,第二排有一个图,那么就是
mat<-matrix(c(1,2,3,3),nrow=2,ncol=2,byrow=TRUE)。很明明,照旧将画布分成很多小格矩阵,这里
就是2X2的,假如但愿第1个图放入第一排的1,2格,那就在矩阵的第1,2的位置写入1,假如是但愿第2个图放在第一排的1,2格,那就在矩阵的第
1,2的位置写入2。

> attach(mtcars)
> layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
> hist(wt)
> hist(mpg)
> hist(disp)

R绘图根基(一)构造颜色等——1

layout犯科则机关0

那么参数中的widths和heights又是做什么用的呢?它们就是用来指定每行可能每列的宽度和高度的。我们可以做以下的较量:

> attach(mtcars)
> layout(matrix(c(1,1,1,1,2,2,2,3,2,2,2,3),3,4,byrow=TRUE))
> hist(wt)
> hist(mpg)
> hist(disp)
> layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE), 
+   	 widths=c(3,1), heights=c(1,2))
> hist(wt)
> hist(mpg)
> hist(disp)

R绘图根基(一)构造颜色等——1

layout犯科则机关1

我们发明,这两种要领获得的是沟通的功效,在代码的书写上,第2种要领要更清晰一些。

#p#分页标题#e#

想象一下,好像每个图的位置必需是连在一起的小矩阵,假如,不组成连在一起小矩阵,会成为怎么样的一个功效呢?

> attach(mtcars)
> layout(matrix(c(1,1,2,1,1,1),nrow=2,ncol=3,byrow=T))
> hist(wt)
> hist(mpg)

R绘图根基(一)构造颜色等——1

layout内嵌图机关

假如需要大图,小图,内嵌图这layout()固然很容易实现,但几多有点贫苦,不是那么随心所欲。照旧回过甚来利用par()吧。利用par()
的中fig=在画布任意位置上绘图。在利用fig参数时,需要把画布领略成左下角为坐标(0,0),右上角为(1,1)的一个坐标系。
fig=c(x1,x2,y1,y2)来配置该参,x1

> par(fig=c(0,0.85,0,0.85), new=F)
> plot(mtcars$wt, mtcars$mpg, xlab="Miles Per Gallon",
+   ylab="Car Weight")
> par(fig=c(0,0.8,0.55,1), new=TRUE)
> boxplot(mtcars$wt, horizontal=TRUE, axes=FALSE)
> par(fig=c(0.65,1,0,0.8),new=TRUE)
> boxplot(mtcars$mpg, axes=FALSE)
> mtext("Enhanced Scatterplot", side=3, outer=TRUE, line=-3)
> par(fig=c(0.4,0.75,0.4,0.7),new=TRUE,mar=c(2,2,0,0),mgp=c(1,.4,0),cex=1,cex.lab=0.7,cex.axis=0.7)
> hist(mtcars$mpg, main="")

R绘图根基(一)构造颜色等——1

par实现内嵌图

12下一页

 

    关键字:

天才代写-代写联系方式