2016-04-06 5 views
2

私はtableGrob内の特定の列をカスタマイズしたいと考えています。この再現可能な例のために、調整のカスタマイズを検討しました。RのtableGrobに特定の列をカスタマイズするにはどうすればよいですか?

df <- data.frame(Order = c(1:3), Name = c("Adam", "Ben", "Charlie"), Score = c(4, 8, 9)) 

そして、あなたがテーブルを提示したパッケージgridExtraを使用したい:

では、次のデータフレームを持っていると言う

dfGrob <- tableGrob(df, rows = NULL) 
grid.arrange(dfGrob) 

あなたがテーマを調整することによって、列の位置を調整することができますgrobを構築するために使用されます:

tt1 <- ttheme_default(core=list(fg_params=list(hjust= 0, x=0.05)), 
        colhead=list(fg_params=list(hjust=0, x=0.1))) 


dfGrob <- tableGrob(df, rows = NULL, theme = tt1) 
grid.arrange(dfGrob) 

ただし、これにより、すべての列のジャスティフィケーションが調整されます。私はちょうど注文欄を正当化し、他の人たちを中央の正当な立場にしておきたいと思いますが、どうすればいいですか?

私はで実験しています

tt1 <- ttheme_default(core=list(fg_params=list(hjust= c(0, 0.5, 0.5), x=c(0.15, 0.5, 0.5))), 
        colhead=list(fg_params=list(hjust=1, x=0.95))) 

dfGrob <- tableGrob(df, rows = NULL, theme = tt1) 
grid.arrange(dfGrob) 

しかし、これは単なる行でカスタマイズするようです。代わりにこのコードを調整して列でカスタマイズするにはどうすればよいですか?

答えて

3

それは少し厄介ですが、ほとんどの場合、テーブルには色を交互の列を持っているので、あなたは、すべての要素のパラメータ、

library(grid) 
library(gridExtra) 

df <- data.frame(Order = c(1:3), 
       Name = c("Adam", "Ben", "Charlie"), 
       Score = c(4, 8, 9)) 

hj <- matrix(c(0, 0.5, 1), ncol=3, nrow=nrow(df), byrow=TRUE) 
x <- matrix(c(0, 0.5, 1), ncol=3, nrow=nrow(df), byrow=TRUE) 

tt1 <- ttheme_default(core=list(fg_params=list(hjust = as.vector(hj), 
               x = as.vector(x))), 
         colhead=list(fg_params=list(hjust=1, x=0.95))) 


dfGrob <- tableGrob(df, rows = NULL, theme = tt1) 
grid.newpage() 
grid.draw(dfGrob) 

列方向にrecycling logicデフォルトを指定することができます。水平調整パラメータを特殊化することで、これをユーザーフレンドリーにすることができます。 PRを提出してください。

enter image description here

+0

すごい@baptiste素晴らしい作品です!あなたが言っているように偽っていますが、私はコードを十分に理解していないので、PRを提出することはできますが、うまくいけばいつかそこに着くでしょう。 –

関連する問題