我想创建一个tableGrob
,我需要一些高级格式,例如旋转其顶头(90度)。不幸的是,格式给我留下了类似于以下问题的剪切的别名:Incorrect left align using tableGrob。
正如您在下面的示例中看到的那样,剪辑发生时,同名没有向左对齐,这意味着直接考虑旋转的第一行。将旋转角度设置为0时也会发生此问题。
library(gridExtra)
x <- head(iris)
grid_table <- tableGrob(x, rows=NULL, cols= colnames(x),
theme=ttheme_minimal(
base_size=font_size,
padding = unit(c(1.5,1.5), "mm"),
core=list(fg_params=list(x=0, hjust=0, fontface=1)),
col.just="left",
colhead=list(fg_params=list(x=0.3, hjust=0.3,
fontface=2, rot=90))))
grid.arrange(grid_table)
我尝试按照上述问题中的建议来覆盖textii
函数,但仅出现以下错误:Error in bindingIsLocked(x, ns) : no binding for "textii"
。我正在使用gridExtra 2.3版。
有什么建议如何将排线头对准第一行以及如何避免剪切效果?
提前谢谢!
编辑:
如下重写textii
时发生错误:
textii <- function(d, gp=gpar(), name="row-label-",
just="center", parse=TRUE){
x <- switch(just, "center"=0.5, "right"=1, "left"=0)
parseglobal <- parse
function(ii, parse=parseglobal){
lab <- if(parse) parse(text=d[ii]) else d[ii]
textGrob(x=x, label=lab, just=just, gp=gp, name=paste(name, ii, sep=""))
}
}
assignInNamespace("textii", textii, "gridExtra")
答案 0 :(得分:1)
我不清楚您要寻找的对齐方式,但以下是旋转标签垂直对齐的三个选项,
library(gridExtra)
x <- head(iris)
g1 <- tableGrob(x, rows=NULL, cols= colnames(x),
theme=ttheme_minimal(
base_size=12,
padding = unit(c(1.5,1.5), "mm"),
core=list(fg_params=list(x=0, hjust=0, fontface=1)),
colhead=list(fg_params=list(hjust=0, y=0,
fontface=2, rot=90))))
g2 <- tableGrob(x, rows=NULL, cols= colnames(x),
theme=ttheme_minimal(
base_size=12,
padding = unit(c(1.5,1.5), "mm"),
core=list(fg_params=list(x=0, hjust=0, fontface=1)),
colhead=list(fg_params=list(hjust=0.5, y=0.5,
fontface=2, rot=90))))
g3 <- tableGrob(x, rows=NULL, cols= colnames(x),
theme=ttheme_minimal(
base_size=12,
padding = unit(c(1.5,1.5), "mm"),
core=list(fg_params=list(x=0, hjust=0, fontface=1)),
colhead=list(fg_params=list(hjust=1, y=1,
fontface=2, rot=90))))
grid.arrange(g1,g2,g3,nrow=1)