我正在尝试为我的regsubsets
输出绘制一个漂亮的图。我需要减小 x 轴标签的字体大小(有 171 个基因,因此不可读)。
我正在使用的代码是:
regsubsets(x=genes, y=resp, really.big=TRUE, nvmax=4, nbest=10)
plot(a, scale="adjr2", cex=0.5)
Run Code Online (Sandbox Code Playgroud)
我有几个不同的cex
参数(cex
、、、、、、、) ,但cex.axis
没有cex.lab
一个可以cex.main
使字体大小变小。cex.sub
cex.text
cex.names
看起来解决方案应该很简单,但我无法弄清楚!有什么建议么?
该函数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)
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以更改标签的大小:
library(leaps)
data(swiss)
b <- regsubsets(Fertility ~ ., data = swiss, nbest = 2)
plot.regsubsets2(b, cex.axis = 0.75)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
988 次 |
最近记录: |