gpt4 book ai didi

r - gridExtra tableGrob 的垂直对齐(R 网格图形/grob)

转载 作者:行者123 更新时间:2023-12-04 12:30:58 27 4
gpt4 key购买 nike

在对齐网格图形对象时遇到了一些麻烦——我已经阅读了我能找到的所有文档,包括 Murrell 的书,但没有成功。我认为我正在尝试做的事情非常简单,所以希望我缺少简单的东西。

这是一个可重现的示例,它将按目的地在 Hadley 的 hflights 中生成所有航空承运人的 PDF。包(反射(reflect)我在不同的数据集上尝试做的事情)。

require(hflights)
require(gridExtra)
require(Cairo)

make_table <- function(df) {
p <- tableGrob(
df
,padding.h=unit(.25, "mm")
,show.rownames=FALSE
,gpar.coretext = gpar(fontsize=8, lineheight=0)
#this doesn't seem to justify the table
,just = c("bottom")
,show.box = T
)
return(p)
}

dests <- unique(hflights$Dest)

#list to hold the plots
plot_list <- list()

#loop over destinations and make a simple report
for (i in dests) {
#just this destination
this_dest <- hflights[hflights$Dest == i, ]

#the title
title <- textGrob(label = i, gp = gpar(fontsize=72, fontface = 'bold'))

#a table of carriers
carriers <- unique(this_dest$UniqueCarrier)
carriers <- data.frame(
carrier=carriers
)
carrier_table <- make_table(carriers)

#put them together
p <- arrangeGrob(
title, carrier_table
,nrow=2
)

plot_list[[i]] <- p
}


#print the report
Cairo(
width = 11, height = 8.5
,file = paste('destinations.pdf', sep = ''), type="pdf"
,units = "in"
)

print(plot_list)

dev.off()

我想要 tableGrob 生成的整个表格(在 make_table 函数中)以证明到 grob 的顶部。现在它在 grob 内垂直和水平居中。我需要在调用 tableGrob 时这样做吗? , 还是在 arrangeGrob称呼?换一种方式问,如果上述内容不清楚,我怎样才能使整个表格(而不是其中的文本)与其容器的顶部/底部/左侧/右侧对齐?

谢谢!

最佳答案

试试这个,

enter image description here

library(gridExtra)
justify <- function(x, hjust="center", vjust="center", draw=TRUE){
w <- sum(x$widths)
h <- sum(x$heights)
xj <- switch(hjust,
center = 0.5,
left = 0.5*w,
right=unit(1,"npc") - 0.5*w)
yj <- switch(vjust,
center = 0.5,
bottom = 0.5*h,
top=unit(1,"npc") - 0.5*h)
x$vp <- viewport(x=xj, y=yj)
if(draw) grid.draw(x)
return(x)
}

g <- tableGrob(iris[1:3,1:2])
grid.newpage()
justify(g,"right", "top")

关于r - gridExtra tableGrob 的垂直对齐(R 网格图形/grob),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25452569/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com