ljhdo

文本表是显示数据的重要图形,一个文本表按照区域划分为:列标题,行标题,数据区,美学特征有:前景样式、背景央视、字体、网格线等。

一,使用ggtexttable绘图文本表

载入ggpubr包,可以使用ggtexttable绘制文本表:

library(ggpubr)

1,基本函数

绘制一个文本表,用到7个基本函数:

  • ggtexttable():用于绘制文本表,
  • ttheme():用于设置表的样式,
  • rownames_style(), colnames_style(), tbody_style():用于设置列标题,行标题和数据区的样式
  • table_cell_font():用于设置单元格中文本的size和face,
  • table_cell_bg():用于设置单元格的背景色(fill,color,linewidth)

这7个基本函数的定义是:

ggtexttable(x, rows = rownames(x), cols = colnames(x), vp = NULL, theme = ttheme(), ...)

ttheme(base_style = "default", base_size = 11, base_colour = "black",
  padding = unit(c(4, 4), "mm"), colnames.style = colnames_style(size =
  base_size), rownames.style = rownames_style(size = base_size),
  tbody.style = tbody_style(size = base_size))

colnames_style(color = "black", face = "bold", size = 12,
  fill = "grey80", linewidth = 1, linecolor = "white", parse = FALSE,
  ...)

rownames_style(color = "black", face = "italic", size = 12, fill = NA,
  linewidth = 1, linecolor = "white", parse = FALSE, ...)

tbody_style(color = "black", face = "plain", size = 12,
  fill = c("grey95", "grey90"), linewidth = 1, linecolor = "white",
  parse = FALSE, ...)

table_cell_font(tab, row, column, face = NULL, size = NULL)

table_cell_bg(tab, row, column, fill = NULL, color = NULL, linewidth = NULL)

参数注释:

  • vp:可选的视口(view port)
  • parse:设置为TRUE时,表示使用文字表示符号
  • ...:额外的参数,用于设置文本对齐,例如:hjust 和 x,其中,hjust = 1 靠右, = 0 靠左,x是间距
  • fill:填充的背景色,当填充数据区时,如果该参数是含有多个颜色的向量,那么R循环使用向量中颜色来填充表格的背景。
  • face:字体的效果,有效值是 c("plain", "bold", "italic", "bold.italic")
  • tab:ggtexttable类型的对象
  • base_style:系统自定义的基础样式,c("default", "blank", "classic", "minimal", "light", "lBlack", "lBlue", "lRed", "lGreen", "lViolet", "lCyan", "lOrange", "lBlackWhite", "lBlueWhite", "lRedWhite", "lGreenWhite", "lVioletWhite", "lCyanWhite", "lOrangeWhite", "mBlack", "mBlue", "mRed", "mGreen", "mViolet", "mCyan", "mOrange", "mBlackWhite", "mBlueWhite", "mRedWhite", "mGreenWhite", "mVioletWhite", "mCyanWhite", "mOrangeWhite" ). 注意, l = "light"; m = "medium",
  • base_size,base_colour:默认的字体大小和颜色
  • padding:是两个元素的向量,指定每个单元格内的文本的水平和垂直填充

2,基本用法

把rows参数设置为NULL,表示移除行名称;使用theme参数自定义表格显示的样式,hjust=1,x=0.9,表示单元格的文本靠右,间距为0.9。

df <- head(iris)
tbody.style = tbody_style(color = "black",
   fill = c("#e8f3de", "#d3e8bb"), hjust=1, x=0.9)
ggtexttable(head(iris), rows = NULL,
           theme = ttheme(
             colnames.style = colnames_style(color = "white", fill = "#8cc257"),
             tbody.style = tbody.style
           )
)

3,设置文本表的单元格

使用变量保存文本表的对象,然后对文本表的单元格进行修改

tab <- ggtexttable(head(iris), rows = NULL,
                  theme = ttheme("classic"))
tab <- table_cell_font(tab, row = 3, column = 2,
                      face = "bold")
tab <- table_cell_bg(tab, row = 4, column = 3, linewidth = 5,
                    fill="darkolivegreen1", color = "darkolivegreen4")
tab

二,使用grid和gridExtra绘制网格

使用grid 和 gridExtra这两个包来绘制网格图形,特别是多个图形的布局以及表格的绘制。使用这种方式来绘制文本表,比ggtexttable复杂。

1,基本用法

绘制最基本的表格,使用grid.table()函数来绘制:

library(gridExtra)
library(grid)
d <- head(iris[,1:3])
grid.table(d)

表格的列名(column name)是由数据框来的列名确定的,列之间的距离(sapce)是由表格单元(cell)和列名的长度确定的,行名(row name)是自动生成的数字。

2,美学参数

表格的格式是由主题(theme)确定的,theme是图像参数的嵌套列表,内置的两个主题函数是:ttheme_default() 和 ttheme_minimal(),用于指定表格显示的格式,这两个函数的差异是ttheme_minimal()不显示网格线。

ttheme_default(base_size = 12, base_colour = "black", base_family = "",parse = FALSE, padding = unit(c(4, 4), "mm"), ...)
ttheme_minimal(base_size = 12, base_colour = "black", base_family = "",parse = FALSE, padding = unit(c(4, 4), "mm"), ...)

使用ttheme_minimal()函数定义三个图形选项core,colhead和rowhead,分别用于控制表格显示的数据区,列标题和行标题的格式,该参数的值都是list类型:

core/colhead/rowhead=list(bg_params = list(fill = blues9[1:4], col=NA), fg_params=list(fontface=3))

在每一个图形选项中,可以定义两个图形参数:bg_paramsfg_params,分别控制表格的背景和前景。

bg_params = list(fill = blues9[1:4], col=NA,alpha = 1,hjust=0, x=0)
fg_params = list(col="blue", fontface=4L, parse=TRUE)

参数注释:

  • parse:设置为TRUE时,可以使用文字表示符号
  • col:fg_params中的col参数控制字体的颜色,bg_params中的col控制网格线的颜色
  • alpha:控制背景色的透明度
  • hjust:控制水平对齐, hjust = 1 靠右, = 0 靠左 
  • vjust:控制垂直对齐,vjust = 1 靠上, = 0 靠下
  • x
  • fontface:控制字体大小

例如,使用简约风格的主题来绘制表格:

tt <- ttheme_minimal(
  core=list(bg_params = list(fill = blues9[1:4], col=NA),
            fg_params=list(fontface=3)),
  colhead=list(fg_params=list(col="navyblue", fontface=4L)),
  rowhead=list(fg_params=list(col="orange", fontface=3L)))
grid.table(iris[1:4, 1:2], theme=tt)

 

 

参考文档:

Draw a Textual Table

ggtexttable

Package ‘gridExtra’

Displaying tables as grid graphics

DT: An R interface to the DataTables library

grid Practice

相关文章: