是否可以在 R 包 vcd 中使用 pairs_barplot 更改 barplot 刻度线标签的字体大小?

Is it possible to change the fontsize of barplot tick mark labels with pairs_barplot in R package vcd?

对于大量变量,在 R vcd[=23] 中使用 pairs_barplot() 创建的马赛克对图对角线上的条形图中刻度线标签的大小太大=] 包。有什么办法可以让它们变小吗?这是一个最小的工作示例:

library(vcd)
#> Loading required package: grid
library(vcdExtra)
#> Loading required package: gnm
pairs(table(ICU[,c(1,3:9)]), 
      diag_panel = pairs_barplot(
        gp_vartext = gpar(fontsize = 10, fontface = 2),
        gp_leveltext = gpar(fontsize = 8),
        abbreviate = 1,
        var_offset = 1.25))

reprex package (v2.0.1)

于 2021-10-16 创建

目前,您无法设置 gpar() 以显式绘制条形图的 y 轴。不过,有两种通用的解决方法:(1) 不要弄乱字体大小,而是在更大的设备上绘图。 (2) 设置具有不同 gpar(fontsize = ...) 的外部视口,用作绘图中更下方的视口。

(1) 更大的设备

为了说明,我在这里使用 png() 设备,因为 PNG 图形是我在 Whosebug 上嵌入的图形。但是,当然,您可以在其他设备上使用相同的技巧,包括那些不是您自己创建的设备,而是通过 R/Markdown 中的块选项等

我使用的设备尺寸为 13 x 13 英寸(相对于更常见的 6 x 6 或 7 x 7 英寸设置)。然后我可以省略所有 gpar() 设置,因为设备足够大以容纳默认参数。不过,我仍然设置 abbreviatevar_offset

png("pairs1.png", height = 13, width = 13, units = "in", res = 100)

pairs(table(ICU[, c(1, 3:9)]),
  diag_panel = pairs_barplot(abbreviate = 1, var_offset = 1.25))

dev.off()

(2) 外部视口

或者,我可以自己创建一个新的 grid 页面,并推送一个 gpar(fontsize = 7) 的视口作为该视口及其子项的默认值。然后我将您的 gpar() 设置保留在 pairs_barplot() 中,并在 pairs() 调用中添加 newpage = FALSE 因为我想使用我已经创建的页面。

然后减小所有字体大小,以便在 7 x 7 英寸的设备上绘图可以正常工作。

png("pairs2.png", height = 7, width = 7, units = "in", res = 150)

grid.newpage()
pushViewport(viewport(gp = gpar(fontsize = 7)))

pairs(table(ICU[, c(1, 3:9)]), 
  diag_panel = pairs_barplot(
    gp_vartext = gpar(fontsize = 10, fontface = 2),
    gp_leveltext = gpar(fontsize = 8),
    abbreviate = 1, var_offset = 1.25),
  newpage = FALSE)

dev.off()