使用默认表格输出时,默认为绘制"轴"使用参数名称的标签(在这种情况下为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
输出一些表格,这些表格由grid.arrange
中的其他ggplot组件组成。但是,轴标签会丢失。
grid.arrange(tableGrob(
table(
k1=matrix(1:4, 2),
k2=matrix(1:4, 2)
)
))
我想做的就是把它们包括在内,或者甚至在制作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
)
答案 0 :(得分:4)
不确定您想要标签的确切位置,但最好将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)
答案 1 :(得分:2)
你可以使用带有映射美学的空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)