6

grid.table または grid.arrange (tableGrob 経由) を使用して PDF ファイルに印刷しようとしているかなり幅の広いテーブル (ページ幅の 4/3) があります。テーブルがページの境界を超え、クリップされます。grid.table/grid.arrange にテーブルを印刷領域に合わせて拡大縮小する方法はありますか?

4

3 に答える 3

5

方法はありますが、テキストが広すぎて一部のセルに収まらない場合にどうすればよいかは不明です。

1 つのオプションは、幅を手動で設定することです。

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)

もちろん、固定フォント サイズでは、一部のテキストが切り取られる可能性があることを意味します。

ここに画像の説明を入力

おそらくより良いオプションは、改行を導入するか、(わずかに) フォント サイズを小さくすることです。

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)

ここに画像の説明を入力

于 2015-07-24T22:46:37.303 に答える
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')
)
于 2014-03-03T03:45:54.500 に答える