R 文本组上的widthDetails()不';不注意字体大小-解决方法?
网格实用程序应用于文本栏时,似乎不会注意字体大小R 文本组上的widthDetails()不';不注意字体大小-解决方法?,r,r-grid,R,R Grid,网格实用程序应用于文本栏时,似乎不会注意字体大小 > version$version.string [1] "R version 3.3.1 (2016-06-21)" > library(grid) > widthDetails(textGrob(label="abcdef", gp=gpar(fontsize=12))) [1] 0.5inches > widthDetails(textGrob(label="abcdef", gp=gpar(fontsize=8.8
> version$version.string
[1] "R version 3.3.1 (2016-06-21)"
> library(grid)
> widthDetails(textGrob(label="abcdef", gp=gpar(fontsize=12)))
[1] 0.5inches
> widthDetails(textGrob(label="abcdef", gp=gpar(fontsize=8.8)))
[1] 0.5inches
事实上,检查(代码的暴露部分)时,它看起来完全忽略了per grob图形参数
> grid:::widthDetails.text
function (x)
{
bounds <- grid.Call(L_textBounds, as.graphicsAnnot(x$label),
x$x, x$y, resolveHJust(x$just, x$hjust), resolveVJust(x$just,
x$vjust), x$rot, 0)
if (is.null(bounds))
unit(0, "inches")
else unit(bounds[3L], "inches")
}
<bytecode: 0x49eab10>
<environment: namespace:grid>
>网格:::widthDetails.text
功能(x)
{
bounds我仍然认为这算是网格中的一个bug,我将为其他答案保留这个选项,但对于我来说,一个足够的解决方法是使用grob的图形参数推送视口
widthDetailsWithGP <- function (grob) {
if (!is.null(grob$gp)) {
pushViewport(viewport(gp=grob$gp))
on.exit(popViewport())
}
return(widthDetails(grob))
}
widthDetailsWithGP我仍然认为这算是网格中的一个bug,我将保留此选项,等待其他答案,但对我来说,一个足够的解决方法是使用grob的图形参数推送视口
widthDetailsWithGP <- function (grob) {
if (!is.null(grob$gp)) {
pushViewport(viewport(gp=grob$gp))
on.exit(popViewport())
}
return(widthDetails(grob))
}
widthDetailsWithGP