2012-08-02 16 views
27

最近、gridExtraパッケージのgrid.table機能を使用して、Webで使用するために表形式のデータをpng画像ファイルに変換し始めました。私はそれがデフォルトで非常に見栄えの良い出力を生成する限り、それを喜んでいました。テーブルのようにggplot2のようなものです。 askedこの質問の人のように、私は個々の列の正当性を指定する機能を見たいと思っていますが、それはすでにより多くのishケーキであるアイシングになります。grid.tableプロットにテキストを追加する

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

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") 
      ) 

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

enter image description here

私は本当にコードではなく、相互に画像を編集して、次のような何かをできるようにしたいときアプリケーション:

enter image description here

答えて

41

あなたはタブを評価したいと思うのテーブルの近くにテキストを配置するには最初ルサイズ、

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) 

編集gridExtra> = 2.0.0(17/07/2015)は、このアプローチはもはや適していません。 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) 
+0

おかげで、問題を解決し、私はそれからいくつかのことを学びました。ビューポートなどでテーブルとテキストgrobsを使用することもできますか? – SlowLearner

+0

確かに、vTをgTree – baptiste

+0

に与えることはできますが、これを使った後にテーブルの色が消えてしまいます。私はタイトルに色付けするだけです。 – lulumink

2

は、あなたがだけタイトル(なし脚注を)したい場合は、ここでは、@バティストの例の簡易版である:

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) 
関連する問題