在R中打印regsubsets对象时,调整R中的打印参数(x轴下方有更多空间)
我正在尝试调整通常使用在R中打印regsubsets对象时,调整R中的打印参数(x轴下方有更多空间),r,visualization,regression,R,Visualization,Regression,我正在尝试调整通常使用par(mar=c(10,4.1,4.1,2.1)进行的绘图参数,以便在x轴下方留出更多空间来绘制这些标签。目前,变量名称已从屏幕上消失 是因为我正在绘制的leaps包或regsubsets对象无法识别par(mar=c(10,4.1,4.1,2.1)) 这里有一个简单的例子来说明我正在尝试做什么 require('leaps') par(mar=c(10,4.1,4.1,2.1)) leaps <- regsubsets(mpg~disp+hp+drat+wt+qs
par(mar=c(10,4.1,4.1,2.1)
进行的绘图参数,以便在x轴下方留出更多空间来绘制这些标签。目前,变量名称已从屏幕上消失
是因为我正在绘制的leaps包或regsubsets
对象无法识别par(mar=c(10,4.1,4.1,2.1))
这里有一个简单的例子来说明我正在尝试做什么
require('leaps')
par(mar=c(10,4.1,4.1,2.1))
leaps <- regsubsets(mpg~disp+hp+drat+wt+qsec, data=mtcars, nbest=2, nvmax=5)
## artificially making labels longer... my labels are longer than this example dataset
labs <- sapply(leaps$xnames, function(x) paste(rep(x,5), collapse=''))
plot(leaps, scale=c('adjr2'), labels=labs))
require('leaps'))
par(mar=c(10,4.1,4.1,2.1))
跳跃这是由函数体中的函数(plot.regsubsets()
)设置mar
引起的。这将覆盖您设置的mar
您可以通过将mar
参数添加到plot.regsubsets()
函数并将其传递到函数体第3行的par()
调用来解决此问题:
plot.regsubsets<-function(x,labels=obj$xnames,main=NULL,
scale=c("bic","Cp","adjr2","r2"),
col=gray(seq(0,0.9,length=10)),mar = c(7,5,6,3)+0.1, ...){
obj<-x
lsum<-summary(obj)
par(mar=mar)
nmodels<-length(lsum$rsq)
np<-obj$np
propscale<-FALSE
sscale<-pmatch(scale[1],c("bic","Cp","adjr2","r2"),nomatch=0)
if (sscale==0)
stop(paste("Unrecognised scale=",scale))
if (propscale)
stop(paste("Proportional scaling only for probabilities"))
yscale<-switch(sscale,lsum$bic,lsum$cp,lsum$adjr2,lsum$rsq)
up<-switch(sscale,-1,-1,1,1)
index<-order(yscale*up)
colorscale<- switch(sscale,
yscale,yscale,
-log(pmax(yscale,0.0001)),-log(pmax(yscale,0.0001)))
image(z=t(ifelse(lsum$which[index,],
colorscale[index],NA+max(colorscale)*1.5)),
xaxt="n",yaxt="n",x=(1:np),y=1:nmodels,xlab="",ylab=scale[1],col=col)
laspar<-par("las")
on.exit(par(las=laspar))
par(las=2)
axis(1,at=1:np,labels=labels)
axis(2,at=1:nmodels,labels=signif(yscale[index],2))
if (!is.null(main))
title(main=main)
box()
invisible(NULL)
}
plot.regsubset