1

对于大量变量,刻度标记标签的大小在条形图中沿用pairs_barplot()R vcd包创建的马赛克对图的对角线太大。有没有办法让它们变小?这是一个最小的工作示例:

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 包于 2021-10-16 创建(v2.0.1)

4

1 回答 1

1

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

(1) 更大的设备

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

我使用 13 x 13 英寸的设备尺寸(而不是更常见的 6 x 6 或 7 x 7 英寸设置)。然后我可以省略所有gpar()设置,因为设备足够大,可以容纳默认参数。不过,我仍然设置abbreviateand var_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()

更大设备上的pairs.table

(2) 外部视口

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

然后减小所有字体大小,以便在 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()

带有外部视口的pairs.table

于 2021-10-17T23:51:24.560 回答