32

私は最近grid.table、パッケージの関数を使用して、gridExtra表形式のデータを Web で使用するための png 画像ファイルに変換し始めました。デフォルトで for table のような非常に見栄えの良い出力が生成されるので、私はこれに満足していますggplot2この質問をした人のように、個々の列の正当性を指定する機能が欲しいのですが、それはすでにより多くのケーキにアイシングになるでしょう.

grid.table私の質問は、プロットされた表にタイトルと脚注を付けることができるように、a の周りにテキストを追加できるかどうかです。これは実行可能であるように思えますが、グリッドグラフィックスについて十分に理解していないため、テーブルグロブにグロブを追加する方法を理解できません。たとえば、次のコード:

require(gridExtra)

mydf <- data.frame(Item = c('Item 1','Item 2','Item 3'), 
                    Value = c(10,15,20), check.names = FALSE)
grid.table(mydf,
           gpar.coretext=gpar(fontsize = 16),
           gpar.coltext = gpar(fontsize = 16),
           gpar.rowtext = gpar(fontsize = 16),
           gpar.corefill = gpar(fill = "blue", alpha = 0.5, col = NA),
           h.even.alpha = 0.5,
           equal.width = FALSE,
           show.rownames = FALSE,
           show.vlines = TRUE,
           padding.h = unit(15, "mm"),
           padding.v = unit(8, "mm")
           )

このプロットを生成します:

ここに画像の説明を入力

別のアプリケーションで画像を編集するのではなく、コードで次のようなことが本当にできるようにしたい場合:

ここに画像の説明を入力

4

2 に答える 2

49

テーブルの近くにテキストを配置するには、最初にテーブルのサイズを評価する必要があります。

library(gridExtra)
d <- head(iris)
table <- tableGrob(d)

grid.newpage()
h <- grobHeight(table)
w <- grobWidth(table)
title <- textGrob("Title", y=unit(0.5,"npc") + 0.5*h, 
                  vjust=0, gp=gpar(fontsize=20))
footnote <- textGrob("footnote", 
                     x=unit(0.5,"npc") - 0.5*w,
                     y=unit(0.5,"npc") - 0.5*h, 
                  vjust=1, hjust=0,gp=gpar( fontface="italic"))
gt <- gTree(children=gList(table, title, footnote))
grid.draw(gt)

編集 (2015 年 7 月 17 日) gridExtra >=2.0.0 では、このアプローチは適切ではなくなりました。tableGrob は、より簡単にカスタマイズできる gtable を返すようになりました。

library(gridExtra)
d <- head(iris)
table <- tableGrob(d)

library(grid)
library(gtable)

title <- textGrob("Title",gp=gpar(fontsize=50))
footnote <- textGrob("footnote", x=0, hjust=0,
                     gp=gpar( fontface="italic"))

padding <- unit(0.5,"line")
table <- gtable_add_rows(table, 
                         heights = grobHeight(title) + padding,
                         pos = 0)
table <- gtable_add_rows(table, 
                         heights = grobHeight(footnote)+ padding)
table <- gtable_add_grob(table, list(title, footnote),
                         t=c(1, nrow(table)), l=c(1,2), 
                         r=ncol(table))
grid.newpage()
grid.draw(table)
于 2012-08-02T10:03:42.500 に答える
5

タイトルだけ(脚注なし)が必要な場合は、@baptiste の例の簡略版を次に示します。

title <- textGrob("Title", gp = gpar(fontsize = 50))
padding <- unit(0.5,"line")
table <- gtable_add_rows(
  table, heights = grobHeight(title) + padding, pos = 0
)
table <- gtable_add_grob(
  table, list(title),
  t = 1, l = 1, r = ncol(table)
)
grid.newpage()
grid.draw(table)
于 2015-11-16T15:16:52.467 に答える