R绘图系统3.docx
《R绘图系统3.docx》由会员分享,可在线阅读,更多相关《R绘图系统3.docx(31页珍藏版)》请在冰豆网上搜索。
R绘图系统3
3.1
par(oma=rep(3,4),bg="gray80")
plot(c(0,1),c(0,1),type="n",ann=FALSE,axes=FALSE)
box("outer",col="gray")
#setclippingtofigureregion
par(xpd=TRUE)
#deliberatelydrawastupidlylargerectangle
rect(-1,-1,2,2,col="gray90")
box("figure")
#setclippingbacktoplotregion
par(xpd=FALSE)
#deliberatelydrawastupidlylargerectangle
rect(-1,-1,2,2,col="gray80")
box("plot",lty="dashed")
text(.5,.5,"PlotRegion")
mtext("FigureRegion",side=3,line=2)
for(iin1:
4)
mtext(paste("Outermargin",i),side=i,line=1,outer=TRUE)
3.2
par(oma=rep(3,4),mfrow=c(3,2),bg="gray80")
for(iin1:
6){
if(i==3){
omar<-par(mar=c(2,2,2,1))
plot(c(0,1),c(0,1),type="n",ann=FALSE,axes=FALSE)
par(xpd=TRUE)
rect(-1,-1,2,2,col="gray90")
box("figure")
par(xpd=FALSE)
rect(-1,-1,2,2,col="gray80")
box("plot",lty="dashed")
text(.5,.5,"CurrentPlotRegion",cex=1.5)
mtext("CurrentFigureRegion",side=3)
par(omar)
}else{
omar<-par(mar=rep(0,4))
plot(c(0,1),c(0,1),type="n",ann=FALSE,axes=FALSE)
par(xpd=TRUE)
rect(-1,-1,2,2,col="gray90")
box("figure")
text(.5,.5,paste("Figure",i),cex=1.5)
par(omar)
}
}
box("outer",col="gray")
for(iin1:
4)
mtext(paste("Outermargin",i),side=i,line=1,outer=TRUE)
3.3
par(mar=c(3,6,2,2),xaxs="i",yaxs="i",xpd=FALSE,las=1)
plot(c(0,1),c(0,1),type="n",ann=FALSE,axes=FALSE)
box("figure")
rect(0,0,1,1,col="lightgray",border="gray")
axis(1,at=c(0,1),c("",""))
mtext("Minx-value",side=1,adj=0,line=1)
mtext("Maxx-value",side=1,adj=1,line=1)
axis(2,at=c(0,1),c("",""))
mtext("Miny-value",side=2,at=0,adj=1,line=1)
mtext("Maxy-value",side=2,at=1,adj=1,line=1)
lines(c(.6,.6,0),c(0,.6,.6),lty="dashed")
text(.6,.6,expression(paste("Thelocation",
group("(",list(x[i],y[i]),")"))),pos=3)
points(.6,.6,pch=16)
axis(1,at=.6,"")
mtext(expression(x[i]),side=1,at=.6,line=.7)
axis(2,at=.6,"")
mtext(expression(y[i]),side=2,at=.6,line=.7)
3.4
pushViewport(viewport(layout=grid.layout(3,1,
heights=unit(rep(1,3),c("null","cm","null")))))
pushViewport(viewport(layout.pos.row=1))
grid.rect()
pushViewport(plotViewport(c(5,5,3,2),xscale=c(0,11)))
grid.rect(gp=gpar(col="gray"))
grid.text("CurrentPlot",gp=gpar(col="gray"))
grid.rect(0,unit(-5,"lines"),1,unit(5,"lines"),
just=c("left","bottom"),gp=gpar(col="gray",fill="lightgray"))
grid.text("Figure\nMargin\n1",y=unit(-2.5,"lines"))
grid.lines(c(0,1),c(0,0))
grid.segments(c(0,1),c(0,0),c(0,1),unit(c(.5,.5),"lines"))
grid.text(c("xmin","xmax"),c(0,1),unit(c(1,1),"lines"))
grid.lines(c(0,0),unit(c(-1,-4),"lines"))
grid.segments(c(0,0),unit(c(-1,-4),"lines"),
unit(c(-.5,-.5),"lines"),unit(c(-1,-4),"lines"))
grid.text(c("0lines","3lines"),
unit(c(-1,-1),"lines"),unit(c(-1,-4),"lines"),
just=c("right","bottom"))
popViewport
(2)
pushViewport(viewport(layout.pos.row=3))
grid.rect()
pushViewport(plotViewport(c(5,5,3,2),yscale=c(0,11)))
grid.rect(gp=gpar(col="gray"))
grid.text("CurrentPlot",gp=gpar(col="gray"))
grid.rect(unit(-5,"lines"),0,unit(5,"lines"),1,
just=c("left","bottom"),gp=gpar(col="gray",fill="lightgray"))
grid.text("Figure\nMargin\n2",x=unit(-2.5,"lines"))
grid.lines(c(0,0),c(0,1))
grid.segments(c(0,0),c(0,1),unit(c(.5,.5),"lines"),c(0,1))
grid.text(c("ymin","ymax"),unit(c(1,1),"lines"),c(0,1),just="left")
grid.lines(unit(c(0,-3),"lines"),c(0,0))
grid.segments(unit(c(0,-3),"lines"),c(0,0),
unit(c(0,-3),"lines"),unit(c(-.5,-.5),"lines"))
grid.text(c("0lines","3lines"),
unit(c(0,-3),"lines"),unit(c(-1,-1),"lines"),
rot=90,just=c("right","bottom"))
popViewport
(2)
popViewport()
3.5
pushViewport(viewport(layout=grid.layout(3,1,
heights=unit(c(1,1,1),c("null","cm","null")))))
#Firstpage
pushViewport(viewport(layout.pos.row=3,
layout=grid.layout(3,4,
widths=unit(c(2.5,1,1,1),c("cm","null","null","cm")),
heights=unit(c(1,1,2.5),c("cm","null","cm")))))
grid.rect(gp=gpar(col="black"))
for(iin2){
for(jin2:
3){
pushViewport(viewport(layout.pos.col=j,layout.pos.row=i))
grid.rect(gp=gpar(col="gray"))
pushViewport(plotViewport(c(2,2,1,1),xscale=c(0,11),
gp=gpar(col="gray")))
grid.rect(gp=gpar(col="gray"))
grid.text(paste("Plot",j-1))
popViewport()
popViewport()
}
}
pushViewport(viewport(layout.pos.row=2,layout.pos.col=1))
grid.rect(gp=gpar(col="gray",fill="lightgray"))
grid.text("Outer\nMargin\n2")
grid.lines(c(1,1),c(0,1))
grid.segments(c(1,1),c(0,1),
unit(1,"npc")+unit(c(.5,.5),"lines"),
c(0,1))
grid.text(0:
1,
unit(1,"npc")+unit(c(1,1),"lines"),
c(0,1))
grid.lines(unit(1,"npc")-unit(c(0,3),"lines"),c(0,0))
grid.segments(unit(1,"npc")-unit(c(0,3),"lines"),
c(0,0),
unit(1,"npc")-unit(c(0,3),"lines"),
unit(c(-.5,-.5),"lines"))
grid.text(c("0lines","3lines"),
unit(1,"npc")-unit(c(0,3),"lines"),
unit(c(-1,-1),"lines"),
rot=90,just=c("right","bottom"))
popViewport
(2)
#Secondpage
pushViewport(viewport(layout.pos.row=1,
layout=grid.layout(3,4,
widths=unit(c(2.5,1,1,1),c("cm","null","null","cm")),
heights=unit(c(1,1,2.5),c("cm","null","cm")))))
grid.rect(gp=gpar(col="black"))
for(iin2){
for(jin2:
3){
pushViewport(viewport(layout.pos.col=j,layout.pos.row=i))
grid.rect(gp=gpar(col="gray"))
pushViewport(plotViewport(c(2,2,1,1),xscale=c(0,11),
gp=gpar(col="gray")))
grid.rect(gp=gpar(col="gray"))
grid.text(paste("Plot",j-1))
popViewport()
popViewport()
}
}
pushViewport(viewport(layout.pos.row=3,layout.pos.col=2:
3))
grid.rect(gp=gpar(col="gray",fill="lightgray"))
grid.text("OuterMargin1")
grid.lines(c(0,1),c(1,1))
grid.segments(c(0,1),
unit(c(1,1),"npc"),
c(0,1),
unit(c(1,1),"npc")+unit(.5,"lines"))
#grid.rect(c(0,1),
#unit(c(1,1),"npc")+unit(1,"lines"),
#unit(c(1,1),"strwidth",list("0","1")),
#unit(c(1,1),"strheight",list("0","1")),
#gp=gpar(col=NULL,fill="white"))
grid.text(c(0,1),
c(0,1),
unit(c(1,1),"npc")+unit(1,"lines"))
grid.lines(c(0,0),unit(1,"npc")-unit(c(1,4),"lines"))
grid.segments(c(0,0),
unit(1,"npc")-unit(c(1,4),"lines"),
unit(c(-.5,-.5),"lines"),
unit(1,"npc")-unit(c(1,4),"lines"))
grid.text(c("0lines","3lines"),
unit(c(-1,-1),"lines"),
unit(1,"npc")-unit(c(1,4),"lines"),
just=c("right","bottom"))
popViewport
(2)
popViewport()
3.6
par(mar=rep(0,4),cex=0.7)
plot.new()
plot.window(c(0.05,0.95),0:
1)
family<-c("sans","serif","mono")
face<-1:
4
for(iin1:
4)
for(jin1:
3){
par(family=family[j],lheight=1.5)
text(seq(.15,.85,length=4)[i],
seq(.25,.75,length=3)[j],
paste("family=\"",family[j],"\"\nfont=",face[i],sep=""),
font=face[i])
}
segments(.02,c(.125,.375,.625,.875),
.98,c(.125,.375,.625,.875),col="gray")
segments(.02,c(.125,.375,.625,.875)-.01,
.02,c(.125,.375,.625,.875)+.01,col="gray")
segments(.98,c(.125,.375,.625,.875)-.01,
.98,c(.125,.375,.625,.875)+.01,col="gray")
rect(c(.27,.5,.73)-.01,
.1,
c(.27,.5,.73)+.01,
.9,col="white",border=NA)
3.7
par(mar=rep(0,4),xaxs="i",yaxs="i",cex=0.8)
plot.new()
par(new=TRUE)
grid.rect(gp=gpar(col="gray"))
ncol<-4
nrow<-4
xadj<-c(1,0.5,NA,0)
yadj<-c(1,0.5,NA,0)
size<-unit(3,"mm")
for(iin1:
nrow){
for(jin1:
ncol){
x<-i/(nrow+1)
y<-j/(ncol+1)
xu<-unit(x,"npc")
yu<-unit(y,"npc")
grid.segments(unit.c(xu-size,xu),
unit.c(yu,yu-size),
unit.c(xu+size,xu),
unit.c(yu,yu+size),
gp=gpar(col="gray"))
text(x,y,paste("c(",xadj[j],",",yadj[i],")",sep=""),
adj=c(xadj[j],yadj[i]))
}
}
3.8
ncol<-6
nrow<-1
grid.rect(gp=gpar(col="gray"))
for(iin1:
nrow){
for(jin1:
ncol){
x<-unit(j/(ncol+1),"npc")
y<-unit(i/(nrow+1),"npc")
pch<-(i-1)*ncol+j-1
grid.points(x+unit(3,"mm"),y,
pch=pch,gp=gpar(fill="gray"))
grid.text(pch,x-unit(3,"mm"),y,gp=gpar(col="gray"))
}
}
3.9
x<--5:
5
y<--x^2+25
plottype<-function(type){
par(mar=c(1,0,1,0),pty="s")
plot.new()
plot.window(c(-6,6),c(-2,27))
box(col="gray")
points(x,y,type=type)
mtext(paste("type=\"",type,"\"",sep=""))
}
par(mfrow=c(3,2))
plottype("p")
plottype("l")
plottype("b")
plottype("o")
plottype("h")
plottype("s")
3.10
axisfun<-function(mgp=c(3,1,0),xaxs="r",tcl=-.5,
mgpcol="black",xaxscol="black",tclcol="black"){
par(mar=c(5,1,0,1),mgp=mgp,xaxs=xaxs,tcl=tcl,pty="s")
plot.new()
box(col="gray")
text(.5,.75,paste("mgp=c(",paste(mgp,collapse=","),")",sep=""),
col=mgpcol)
text(.5,.5,paste("xaxs=\"",xaxs,"\"",sep=""),
col=xaxscol)
text(.5,.25,paste("tcl=",tcl,sep=""),
col=tclcol)
axis(1,at=c(0,.5,1))
title(xlab="X-axisLabel")
}
par(mfrow=c(2,2))
axisfun()
axisfun(mgp=c(2,0.3,0),tcl=0.2,xaxscol="gray")
axisfun(xaxs="i",mgpcol="gray",tclcol="gray")
3.11
library(gridBase)
par(oma=rep(3,4))
vps<-baseViewports()
#Annotationhelperfunction
annWidth<-function(x,y,lab,above=TRUE,horiz=TRUE){
grid.arrows(x=x,y=y,
ends="both",angle=10,type="closed",
length=unit(3,"mm"),gp=gpar(fill="black"))
nl<-length(lab)
if(nl>1){
y<-y+unit(c(-0.5,0.5),"lines")
if(horiz){
vjust<-1:
0
hjust<-0.5
rot<-0
}else{
hjust<-1:
0
vjust<-0.5
rot<-90
}
}else{
hjust<-0.5
rot<-0
if(above){
y<-y+unit(0.5,"lines")
vjust<-0
}else{
y<-y-unit(0.5,"lines")
vjust<-1
}
}
grid.text(lab,