tableGrob:使用 annotation_custom 调整在 ggplot 顶部绘制的 table(更改字体大小)的大小

tableGrob: resizing a table (changing font size) drawn on top of ggplot using annotation_custom

我在使用 tableGrob() 和 annotation_custom() 调整绘制在绘图上的 table 中的文本大小时遇到​​一些问题。本质上,我希望 table 中的字体大小更小,以便整体 table 更小。我已经检查了 tableGrob() documentation 并已尽我所能遵循它,但我一定是做错了什么,因为它会抛出错误。

这是一个可重现的例子:

library(ggplot2)
library(grid)
library(gridExtra)

df <- data.frame(x=seq(1,10),y=seq(11,20))
table <- data.frame(x=seq(1,3),y=seq(4,6))

ggplot(df,aes(x=x,y=y)) + geom_point() +
 annotation_custom(tableGrob(table,rows=NULL),xmin=0,xmax=3,ymin=15,ymax=20) # plot drawn successfully without text resizing

ggplot(df,aes(x=x,y=y)) + geom_point() + 
  annotation_custom(tableGrob(table,rows=NULL,gpar.coretext = gpar(col = "black", cex = 0.8)),xmin=0,xmax=3,ymin=15,ymax=20)
 # error when attempting to resize text following tableGrob documentation

这是我在 运行 第二个 ggplot() 命令时得到的错误:

Error in gtable_table(d, name = "core", fg_fun = theme$core$fg_fun, bg_fun = theme$core$bg_fun,  : 
  unused argument (gpar.coretext = list(col = "black", cex = 0.8))

非常感谢任何帮助!

如果您只想 所有 文本在 table 中变小,请在 ttheme_default 中使用 base_size:

library(ggplot2)
library(grid)
library(gridExtra)

df <- data.frame(x=seq(1,10),y=seq(11,20))
table <- data.frame(x=seq(1,3),y=seq(4,6))

ggplot(df,aes(x=x,y=y)) + 
  geom_point() + 
  annotation_custom(tableGrob(table,rows=NULL, theme = ttheme_default(base_size = 8)),
                    xmin=0,xmax=3,ymin=15,ymax=20)

reprex package (v0.3.0)

于 2020 年 3 月 5 日创建