将轴标签添加到R中的表格GROB

将轴标签添加到R中的表格GROB,r,ggplot2,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 我试图利用tableGrob输出一些表格,这些表格由网格中的其他ggplot组件组成。排列。但是,轴标签将丢

使用默认表格输出时,默认设置是使用参数名称(本例中为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
我试图利用
tableGrob
输出一些表格,这些表格由
网格中的其他ggplot组件组成。排列
。但是,轴标签将丢失

grid.arrange(tableGrob(
  table(
    k1=matrix(1:4, 2),
    k2=matrix(1:4, 2)
  )
))

我所要做的就是把它们包括在内,甚至在做了grob之后手动将它们包括在内

谢谢

编辑:尝试使用
注释\u自定义

代码:


ggTableAxis2您可以使用带有映射美学的空
ggplot

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

my_grob <- tableGrob(table(k1 = matrix(1:4, 2), k2 = matrix(1:4, 2)))

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

grid.arrange(my_plot, my_plot, my_plot, my_plot)
库(网格)
图书馆(gridExtra)
图书馆(GG2)

my_grob不确定您想要标签的确切位置,但将grob添加到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)

tbl这很好,但是如果超过3个字符,文本就会被截断。有什么想法吗?这很好,但出于某种原因,我得到了完全不同的结果,我在问题中添加了这些结果。旋转是不同的,边缘是巨大的!太好了,谢谢。这是个愚蠢的问题,但我该如何让情节变小呢?在我的RMarkdown文件中,我可以更改
fig.height
,但这只会缩小表的大小,以占用相同的相对空间量。如果我在控制台中运行代码(即避免RMarkdown),我仍然会获得较大的边距。对不起,我是新来的!表格有文本,文本是以绝对大小定义的。有关如何更改文本大小的信息,请参见
vignette('tableGrob')
。您可以使用例如
egg::set_panel_size()
将面板固定到表格大小,但这会变得非常扭曲(+效率低下、不雅观、复杂,…);使用ggplot2仅用于包装grob是我最近看到的一种趋势,这很令人困惑。@dpwrussell我自己几乎从未使用过
grid.table
,我不记得以前有人请求过此功能。在
网格中添加边注释选项并不困难,例如
顶部、底部、左侧、右侧
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)