将 tableGrob 中的 colhead 向左对齐而不剪切 colnames
Align colhead in tableGrob to the left without clipping the colnames
我想创建一个 tableGrob
并且我需要一些高级格式,例如旋转它的 colhead(90 度)。不幸的是,格式给我留下了类似于这个问题的剪辑名称:Incorrect left align using tableGrob。
正如您在下面的示例中看到的那样,裁剪发生时 colnames 没有左对齐,这意味着考虑到旋转直接在第一行。将旋转角度设置为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 版。
关于如何将 colhead 与第一行对齐以及如何避免剪裁效果有什么建议吗?
提前致谢!
编辑:
如下覆盖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")
我不清楚你寻求的对齐方式,但这里有三个用于旋转标签垂直对齐的选项,
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)
我想创建一个 tableGrob
并且我需要一些高级格式,例如旋转它的 colhead(90 度)。不幸的是,格式给我留下了类似于这个问题的剪辑名称:Incorrect left align using tableGrob。
正如您在下面的示例中看到的那样,裁剪发生时 colnames 没有左对齐,这意味着考虑到旋转直接在第一行。将旋转角度设置为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 版。
关于如何将 colhead 与第一行对齐以及如何避免剪裁效果有什么建议吗?
提前致谢!
编辑:
如下覆盖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")
我不清楚你寻求的对齐方式,但这里有三个用于旋转标签垂直对齐的选项,
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)