2014-01-07 174 views
2

我想繪製一個簡單的網格。在這裏和那裏我發現人們使用grid.table編輯grid.table功能

我已成功地顯示我的最簡單的方式可能的數據,像這樣:

library("gridExtra") 
cmSmall = 5 
cmMed = 7 
cmBig = 15 

df = matrix(ncol=4,nrow=2) 
df[1,] = c('Size',"small","medium","large") 
df[2,] = c('cm',cmSmall, cmMed, cmBig) 
df = as.data.frame(df) 


grid.table(df, show.rownames=FALSE, show.colnames=FALSE) 

This is how it looks:

現在,我想以下幾點:

  1. 把 '尺寸'和'cm'以粗體顯示

  2. 添加一個標題(有兩行)對於這個表格(我應該不知何故將這個添加到劇情?!)

任何想法如何做到這一點?

非常感謝!

+0

這真的可以用項目幫助(2):HTTP:/ /stackoverflow.com/questions/11774703/adding-text-to-a-grid-table-plot –

回答

4

您可以通過該列移動到該行的名稱,顯示它和修改rownames的造型在哈克的方式做到1:

grid.table(`rownames<-`(df[-1],df[[1]]), gpar.rowtext = gpar(fontface = "bold"), 
gpar.rowfill = gpar(fill = "grey95", col = "white"), show.colnames=FALSE) 
+0

+1這可能是在這個階段進行的最簡單的方法;獲得** gridExtra **以使用新的**網格**功能需要對您典型的[所以]答案進行太多的黑客攻擊。 –

+0

謝謝詹姆斯!這確實解決了項目1.是否有添加項目2的簡單方法?如果gridExtra是錯誤的路要走,我真的不介意嘗試別的東西......我是R新手,這是我發現的第一件事 - 可能並不理想...... –

+0

查看標題中的這個問題:http://stackoverflow.com/q/10776139/269476 – James

1

這是一個多解決方案的擴展評論,但存在解釋爲什麼這個問題的一部分是目前相當困難---

1至少其實是非常困難的,作爲偶然的機會,Paul Murrell在最新一期的R JournalPDF)中討論過。

的問題歸結爲:

R> grid.table(df, show.rownames=FALSE, show.colnames=FALSE) 
R> grid.ls() 
GRID.table.1 

在這一點上,grid.table()創造了table GROB,只得到與在繪製時構成實際的grobs完成。這是通過適當的drawDetails()方法實現的。但是在表格被真正繪製之前,沒有辦法編輯用於繪製表格的各個單元格;他們還不存在。

的R版本中> = 3.0.0引入了一些新的功能和工作,它會讓你想要什麼,但grid.table()將需要改變在電網包使用新功能的新方法。實際上,這可以歸結爲爲table grob編寫makeContent()方法,然後可以使用grid.force()強制填充單個grobs需要繪製表格的方法。此時,您可以使用grid.edit()使「粗體」和「釐米」粗體。