2014-03-03 78 views
6

我有一個相當寬的表(頁面寬度的4/3),我試圖打印使用grid.table或grid.arrange(通過tableGrob)到一個PDF文件。表格超出了頁面邊界並被裁剪。有沒有辦法強制grid.table/grid.arrange將表格縮放到打印區域?如何適合非常寬的grid.table或tableGrob以適合PDF頁面?

+0

沒了,通過設計。如果表格被縮放到頁面上,則文本將不得不縮放以適應單元格,而不是固定的字體大小,並且我選擇不這樣做。 – baptiste

+1

這是一個解釋,但不是一個原因。你爲什麼選擇不實施?順便說一下,偉大的工具! – rimorob

回答

0

我使用字體大小完成了這項工作。不是最好的解決方案(需要人工干預),但也許有人可以提供更優雅的東西。

termTable = tableGrob(terms, h.even.alpha=1, h.odd.alpha=1, v.even.alpha=0.5, v.odd.alpha=1, core.just='left', rows=c(), 
gpar.coretext =gpar(fontsize=8), 
gpar.coltext=gpar(fontsize=10, fontface='bold'), 
gpar.rowtext=gpar(fontsize=10, fontface='bold') 
) 
-2

隨着最新版本gridExtra,正確的格式更新rimorob的回答是:

termTable = tableGrob(術語,主題= ttheme_default(gpar.coretext = gpar(字體大小= 8),gpar .coltext = gpar(字體大小= 10,fontface = '大膽'),gpar.rowtext = gpar(字體大小= 10,fontface = '大膽')))

+0

我懷疑它,你是否運行這個代碼? – baptiste

3

有一個辦法,但目前還不清楚會發生什麼時該文本太寬以至於不適合某些單元格。

一種選擇是手動設置寬度,當然具有固定的字體大小的

library(grid) 
library(gridExtra) 
g1 <- g2 <- tableGrob(head(iris, 10), rows=NULL) 
g2$widths <- unit(rep(1/ncol(g2), ncol(g2)), "npc") 
grid.newpage() 
gt = arrangeGrob(textGrob("page 1"), textGrob("page 2"), 
       rectGrob(gp=gpar(fill="grey98")), 
       rectGrob(gp=gpar(fill="grey98")), 
       nullGrob(), 
       layout_matrix=rbind(c(1,5,2), c(3,5,4)), 
       widths = unit(c(1,5,1),c("null", "cm", "null")), 
       heights = unit(c(1, 1),c("line", "null")), 
       vp = viewport(width=0.9, height=0.9)) 
tc = list(g1, g2) 
gt <- gtable::gtable_add_grob(gt, tc, l=c(1,3), t=2, 
           name="newgrobs") 

grid.draw(gt) 

但它意味着一些文本可能被切斷。

enter image description here

可能是一個更好的選擇是引入換行符,和/或(稍微)降低字體大小。

g3 <- tableGrob(head(iris, 10), theme = ttheme_default(7), 
       rows=NULL, cols=gsub("\\.", "\\\n",names(iris))) 
g3$widths <- unit(rep(1/ncol(g2), ncol(g2)), "npc") 

grid.newpage() 

gt = arrangeGrob(textGrob("page 1"), textGrob("page 2"), 
       rectGrob(gp=gpar(fill="grey98")), 
       rectGrob(gp=gpar(fill="grey98")), 
       nullGrob(), 
       layout_matrix=rbind(c(1,5,2), c(3,5,4)), 
       widths = unit(c(1,1,1),c("null", "line", "null")), 
       heights = unit(c(1, 1),c("line", "null")), 
       vp = viewport(width=0.9, height=0.9)) 
tc = list(g2, g3) 
gt <- gtable::gtable_add_grob(gt, tc, l=c(1,3), t=2, 
           name="newgrobs") 

grid.draw(gt) 

enter image description here