1

此问题使用 'ggpmisc' 0.3.4 或更早版本,请参阅下面的答案以了解 0.3.5 或更高版本。

我喜欢geom_table_npcggpmisc 中的新功能,它提供了一种将表格添加到 ggplot 的简单方法,并且在转换后的 x 轴上效果特别好,如果绘图边界可能发生变化,尝试设置位置可能会令人沮丧。

我想知道是否可以更改表格主题?我可以使用更改文本大小,size = 1.8但是单元格的填充看起来很奇怪,这是我想要更改的。可能还想改变颜色。

我认为它正在使用gridExtra::ttheme_default,所以我尝试设置它以防它通过...但它只是忽略它。

  library(ggplot2)
  library(ggpmisc)
  library(gridExtra)

  testdat <- data.frame(x = 1/2:50, y = 50:2)

annotatedf <- data.frame(cat = letters[1:3], val = 1:3)

t1plt <- ggplot(testdat, aes(x = x, y = y)) +
           geom_point() + 
           scale_x_log10()


t1plt + 
  geom_table_npc(data = annotatedf, 
                 label = list(annotatedf),
                 npcx = 0.05, npcy = 0.95)

t1plt + 
  geom_table_npc(data = annotatedf, 
                 label = list(annotatedf),
                 npcx = 0.05, npcy = 0.95, size = 1.8)


t1plt + 
  geom_table_npc(data = annotatedf, 
                 label = list(annotatedf),
                 npcx = 0.05, npcy = 0.95, size = 1.8,
                 theme = ttheme_default(padding = unit(c(1, 1), "mm")))
#> Warning: Ignoring unknown parameters: theme

reprex 包(v0.3.0)于 2020-02-18 创建

4

1 回答 1

1

现在在 Bitbucket 的 git 存储库中提供的开发版本 od 'ggpmisc' 中实现了对插入表的主题支持,并将很快发布为 0.3.5 版。

library(ggplot2)
library(ggpmisc)
library(gridExtra)

testdat <- data.frame(x = 1/2:50, y = 50:2)

annotatedf <- data.frame(cat = letters[1:3], val = 1:3)

t1plt <- ggplot(testdat, aes(x = x, y = y)) + 
  geom_point() + 
  scale_x_log10()

下面的代码使用默认值生成的绘图在新版本的 'ggpmisc' 中与早期版本相比仅略有不同,填充和右对齐而不是中心对齐略少。hjust和的显式设置vjust不是必需的,因为它们的默认设置是"inwards"

t1plt + 
  geom_table_npc(data = annotatedf, 
                 label = list(annotatedf),
                 npcx = 0.05, npcy = 0.95)

在此处输入图像描述

当美学映射到一个小值时,默认输出不再使用过多的填充,size因为在新版本中填充与字符大小成正比。

t1plt +
  geom_table_npc(data = annotatedf, 
                 label = list(annotatedf),
                 npcx = 0.05, npcy = 0.95, size = 1.8)

在此处输入图像描述

由于问题要求比默认值更紧密的填充,以及如何使用主题,我们展示了两种方法。在下面的代码中,我们可以将主题作为使用构造函数创建的列表对象传递,但在当前版本中,这会阻止美学映射,在这种情况下,我们需要将大小传递给主题构造函数。

t1plt +
  geom_table_npc(data = annotatedf, 
                 label = list(annotatedf),
                 npcx = 0.05, npcy = 0.95,
                 table.theme = ttheme_default(base_size = 7, 
                                              padding = unit(c(1, 1), "mm")))

在此处输入图像描述

下面的代码显示了主题构造函数的使用。如果我们将自定义主题构造函数定义为gridExtra::ttheme_default()'ggpmisc' 包中的主题的包装器或主题之一,则美学映射仍然有效。

ttheme_custom <- function(base_size = 12, 
                          base_colour = "black", 
                          base_family = "",
                          parse = FALSE, 
                          padding = unit(c(1, 1), "mm"), 
                          ...) {
  gridExtra::ttheme_default(base_size = base_size,
                            base_colour = base_colour,
                            base_family = base_family,
                            parse = parse,
                            padding = padding,
                            ...)
}

t1plt +
  geom_table_npc(data = annotatedf, 
                 label = list(annotatedf),
                 npcx = 0.05, npcy = 0.95, size = 1.8,
                 table.theme = ttheme_custom)

在此处输入图像描述

'ggpmisc' 包提供了几个表格主题构造函数,使用其中一个如下所示。

t1plt +
  geom_table_npc(data = annotatedf, 
                 label = list(annotatedf),
                 npcx = 0.05, npcy = 0.95,
                 table.theme = ttheme_gtlight)

在此处输入图像描述

于 2020-03-21T11:36:23.307 回答