R语言 粗体轴标签(font.lab = 2)不适用于诊断图中的平方残差轴

odopli94  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(123)
df <- structure(list(sales1 = c(11.3208, 12.9151, 18.8947, 14.6739, 8.6493, 9.5238, 7.6923, 0.0017, 8.0477, 6.7358, 6.1441, 21.7939, 4.2553, 0.0017, 11.0196, 6.2762, 13.2316, 5.0676, 5.6235, 14.9893 ), store = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L), levels = c("1", "2", "3", "4", "5", "6"), class = "factor"), day = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L), levels = c("1", "2", "3", "4", "5", "6"), class = "factor")), row.names = c(NA, 20L), class = "data.frame")
par(mfrow= c(2,2), mgp=c(2, .7, 0), mai=c(0.7, 0.7, 0.7, 0.1), font.lab = 2)
a1 <- aov(sales1 ~ store + day, df)
plot(a1)

我发现font.lab = 2对模型诊断图中的所有轴都能很好地工作-除了左下角的y轴(sqrt标准化残差)。
是否有特殊原因导致此功能不起作用?是否有简单的替代解决方案将所有轴标签打印为粗体?

xqk2d5yq

xqk2d5yq1#

第三个图中的标签不是粗体的原因是,它是使用plotmath而不是文本标签创建的(以合并平方根符号)。这意味着它忽略了font.lab参数。
不幸的是,这是硬编码到plot.lm中的,而plot.lm才是实际绘图的部分,我能看到的唯一简单的解决方案是创建plot.lm函数的副本并覆盖相应的行:

plot.lm <- stats:::plot.lm

sub <- quote(yl <- as.expression(substitute(bold(sqrt(abs(YL))),
                                            list(YL = as.name(ylab23)))))

body(plot.lm)[[25]][[3]][[4]] <- sub

现在,您的第三个图也应该有一个粗体标签:

plot(a1)

相关问题