在 R 中向 tableGrob 添加轴标签

dpw*_*pwr 2 r ggplot2

使用默认表输出时,默认情况下是使用参数名称(本例中为 k1 和 k2)绘制“轴”标签。这对于比较集群成员资格特别有用,并且最重要的是要指示哪个集群是行,哪个是列。

table(
  k1=matrix(1:4, 2),
  k2=matrix(1:4, 2)
)

   k2
k1  1 2 3 4
  1 1 0 0 0
  2 0 1 0 0
  3 0 0 1 0
  4 0 0 0 1
Run Code Online (Sandbox Code Playgroud)

我试图利用它tableGrob来输出一些表格,这些表格与grid.arrange. 但是,轴标签会丢失。

grid.arrange(tableGrob(
  table(
    k1=matrix(1:4, 2),
    k2=matrix(1:4, 2)
  )
))
Run Code Online (Sandbox Code Playgroud)

缺失轴

我想做的就是将它们包括在内,甚至在制作 grob 后手动将它们包括在内。

谢谢

编辑:尝试使用annotation_custom

注释_自定义

代码:

ggTableAxis2 <- function(t) {
  my_grob <- tableGrob(t)

  my_plot <- ggplot(mapping = aes(k2, k1)) + 
    annotation_custom(my_grob) +
    scale_x_continuous(position = 'top') +
    theme(axis.title =  element_text(angle = 0, hjust = 0),
          axis.title.x.top =  element_text(hjust = 0))
  return(my_plot)
}

grid.arrange(
  ggTableAxis2(
    table(
      k1=matrix(1:4, 2),
      k2=matrix(1:4, 2)
    )
  ),
  ggTableAxis2(
    table(
      k1=matrix(1:4, 2),
      k2=matrix(1:4, 2)
    )
  ),
  nrow=1
)
Run Code Online (Sandbox Code Playgroud)

bap*_*ste 5

不确定你到底想要标签在哪里,但将 grobs 添加到 gtable 可能是最简单的,

tbl <- table(
  longlabel1=matrix(1:4, 2),
  longlabel2=matrix(1:4, 2)
)

nms <- names(dimnames(tbl))


library(gridExtra)
library(grid)
library(gtable)
grid.newpage()

tg <- textGrob(nms[1], x=0, hjust=0)
lg <- textGrob(nms[2], x=1, hjust=1)
g <- tableGrob(tbl)
g <- gtable_add_rows(g, unit(1,"line"), 0)
g <- gtable_add_cols(g, grobWidth(lg), 0)
g <- gtable_add_grob(g, tg, t = 1, l=3, r=ncol(g))
g <- gtable_add_grob(g, lg, l = 1, t=2)
grid.draw(g)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述