参考:https://www.twblogs.net/a/5c74cddcbd9eee339917b7b2
https://towardsdatascience.com/exploring-the-gt-grammar-of-tables-package-in-r-7fff9d0b40cd
前言
想到表格,是不是就是excel,或者直接用ppt 来肝?
R 天然的就有强大的处理数据生成各种表格的能力,岂不美哉?
今天就来学习一下gt
包:
我的目标是画出:
获取内容
其实也就是标准的数据框格式。
需要注意的是,当导入gt 中绘制表格时,会忽略掉行名与列名。
开始操作
0.基本表格
加载相关包。
尝试直接用gt 获得最基本的图表:
library(gt)
library(tidyverse)
library(glue)
gt(gt_data)
1. 添加行名的标签
也就是:
可以直接在gt 函数中指定rowname_col
:
ps:其中的行的组别可以用参数groupname_col
特别指定,也可以使用重复的名称,直接给rowname_col 指定多个值。
gt_tbl <- gt_data %>%
gt(rowname_col = "names", "group_label")
2. 头部信息
tab_header 可以添加头信息,其中title 与subtitle 分别对应标题和子标题:
gt_tbl <-
gt_tbl %>%
tab_header(
title = md("**Comparison of genomic alterations**"),
subtitle = md("between *BRCA1/2* mutation carriers and non-carriers Among different prognostic variables")
)
gt_tbl
这里使用md() 可以在文本内容中支持md 语法:
3. 添加分组和行的标签名(stubhead label)
使用tab_spanner
函数添加分组,label 指定分组名,columns指定同一分组的多个列。需要使用vars 选定这些列名:
gt_tbl <-
gt_tbl %>%
tab_spanner(
label = "BRCA1",
columns = vars(`carrier(N=17)`, `non-carrier(N=262)`, `P-value-1`)
) %>%
tab_spanner(
label = "BRCA2",
columns = vars(`carrier(N=7)`, `non-carrier(N=272)`, `P-value-2`)
) %>%
tab_stubhead(label = md("**Variables**"))
gt_tbl
4. 修改文本字体位置
gt_tbl <-
gt_tbl %>%
tab_style(
style = list(
cell_text(font = "Oswald",
align = "center",
weight = "bold")
),
locations = list(
cells_data(everything())
)
)
使用tab_style 命令调整,其中style 指定文本风格,locations 指定文本设定的位置(标题、数据、信息框等等),比如cells_data 就是指定body cell的:
效果如下:
我们还可以指定某个cell 以突出其中内容:
## 设置字体
gt_tbl <-
gt_tbl %>%
tab_style(
style = list(
cell_text(
weight = "bold"
),
cell_fill(color = "#F9E3D6")
),
cells_body(
columns = vars(`P-value-1`),
rows = `P-value-1` <= 0.05)
)
gt_tbl
5. 给表格增加一个背景色
tab_options 函数是专门用来调节列表的输出内容的,这里不多赘述,只用来添加背景色:
## 设置背景
gt_tbl %>%
tab_options(
table.background.color = "lightcyan"
)
6. 合并重复数值
在我的图表中,对应的P 值是重复的,不太好看:
这里我直接在edit 中手动将重复的删除(你也可以写代码),就会产生NA 值。
接着使用fmt_missing
函数,便可以实现替换缺失值:
## 去除NA 值
gt_tbl <- gt_tbl %>%
fmt_missing(
columns = TRUE,
missing_text = ""
)
gt_tbl
当然我这里是“曲线修改”了,如果可以像excel中直接合并单元格是更好的了。
7. 表格的输出
可以用gtsave
直接保存为多种类型的数据:
- html
gt_tbl %>% gtsave("tab_1.html")
- PNG&PDF
# tab_1 %>% gtsave("tab_1.png", zoom = 2.5, expand = 10)
# tab_1 %>% gtsave("tab_1.pdf", path = "~")
更多学习的内容
可以参见gt 包官方提供的r cloud 测试服务:
https://rstudio.cloud/project/779965