我正在尝试为regsubsets
输出获得一个很好的情节。我需要让x轴标签的字体大小变小(有171个基因,所以它不可读)。
我使用的代码是:
regsubsets(x=genes, y=resp, really.big=TRUE, nvmax=4, nbest=10)
plot(a, scale="adjr2", cex=0.5)
我有几个不同的cex
个参数(cex
,cex.axis
,cex.lab
,cex.main
,cex.sub
,cex.text
, cex.names
)并且无法使字体变小。
似乎解决方案应该很简单,但我无法弄清楚!有什么建议吗?
答案 0 :(得分:2)
函数plot.regsubsets
不允许修改x轴标签的任何内容。
查看函数的代码:getAnywhere("plot.regsubsets")
。
您必须修改此函数的代码才能更改x轴标签的大小。
plot.regsubsets2 <-
function (x, labels = obj$xnames, main = NULL, scale = c("bic",
"Cp", "adjr2", "r2"), col = gray(seq(0, 0.9, length = 10)),
...)
{
obj <- x
lsum <- summary(obj)
par(mar = c(7, 5, 6, 3) + 0.1)
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,
1e-04)), -log(pmax(yscale, 1e-04)))
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, ...) # I modified this line
axis(2, at = 1:nmodels, labels = signif(yscale[index], 2))
if (!is.null(main))
title(main = main)
box()
invisible(NULL)
}
现在,您可以更改标签的大小:
library(leaps)
data(swiss)
b <- regsubsets(Fertility ~ ., data = swiss, nbest = 2)
plot.regsubsets2(b, cex.axis = 0.75)