今天小编就来汇总一下R中表格(Table) 绘制方法,让你的数据展示不再单一。这里主要包括单一表格绘制和可视化 表格 两个方面。虽然表格制作可能Excel更擅长,但考虑到连贯性等问题,这里这里还是觉得有必要介绍一下,具体内容如下:
- R-单一表格绘制
- R-可视化 表格的”混搭“
R-单一表格绘制
这一部分可能有很多优秀的第三方包可以制作,这里小编主要介绍3个优秀的表格制作包,分别为R-DT、R-gt和R-sjPlot,其他表格绘制工具小编也会在这一部分结尾处汇总。
R-DT交互式表格制作
R-DT包可生成交互式HTML表格,这里小编举几个例子,如下:
「样例一」:
代码语言:javascript复制library(DT)
datatable(iris)
Example01 Of DT::datatable()
「样例二」:定制表格
代码语言:javascript复制# 定制表格
datatable(iris) %>%
formatStyle('Sepal.Length', fontWeight = styleInterval(5, c('normal', 'bold'))) %>%
formatStyle(
'Sepal.Width',
color = styleInterval(c(3.4, 3.8), c('white', 'blue', 'red')),
backgroundColor = styleInterval(3.4, c('gray', 'yellow'))
) %>%
formatStyle(
'Petal.Length',
background = styleColorBar(iris$Petal.Length, 'steelblue'),
backgroundSize = '100% 90%',
backgroundRepeat = 'no-repeat',
backgroundPosition = 'center'
) %>%
formatStyle(
'Species',
transform = 'rotateX(45deg) rotateY(20deg) rotateZ(30deg)',
backgroundColor = styleEqual(
unique(iris$Species), c('lightblue', 'lightgreen', 'lightpink')
))
Example02 Of DT::datatable()
更多其他案例大家可参考:R-DT官网[1]
R-gt出版级别表格制作
首先,我们看一下gt绘制表格的主要参数,如下图(由于较为简单,这里直接给出英文原图):
Parts Of a gt Table
「样例一」:
代码语言:javascript复制library(gt)
library(tidyverse)
library(glue)
# Define the start and end dates for the data range
start_date <- "2010-06-07"
end_date <- "2010-06-14"
# Create a gt table based on preprocessed
# `sp500` table data
sp500 %>%
filter(date >= start_date & date <= end_date) %>%
select(-adj_close) %>%
gt() %>%
tab_header(
title = "S&P 500",
subtitle = glue::glue("{start_date} to {end_date}")
) %>%
fmt_date(
columns = date,
date_style = 3
) %>%
fmt_currency(
columns = c(open, high, low, close),
currency = "USD"
) %>%
fmt_number(
columns = volume,
suffixing = TRUE
)
Example Of gt table make
更多其他案例大家可参考:R-gt官网[2]
R-sjPlot回归模型表格制作
R-sjPlot包之前有介绍过其绘制图表能力(),小编着重介绍其绘制表格的能力。
「注意」:其绘制的表格结果都是回归模型的结果。案例如下:
「样例一」:regression results table
代码语言:javascript复制library(sjPlot)
library(sjmisc)
library(sjlabelled)
# sample data
data("efc")
efc <- as_factor(efc, c161sex, c172code)
m1 <- lm(barthtot ~ c160age c12hour c161sex c172code, data = efc)
tab_model(m1)
Example Of sjPlot::tab_model()
「样例二」:定制化绘制
代码语言:javascript复制tab_model(
m1,
CSS = list(
css.depvarhead = 'color: red;',
css.centeralign = 'text-align: left;',
css.firsttablecol = 'font-weight: bold;',
css.summary = 'color: blue;'
)
)
Example Of sjPlot::tab_model(CSS=**)
更多其他案例大家可参考:R-sjPlot回归表格绘制[3]
当然,除了上面介绍的外,下面小编再汇总列出其他的优秀第三方R包,小伙伴们可自行选择学习哈~如下:
- R-gtsummary
- R-kableExtra
- R-formattable
- R-reactable
- R-flextable
R-可视化 表格的”混搭“
这一部分小编主要介绍如何在可视化绘制(ggplot2体系) 中添加表格内容,用以更加生动的展现数据价值。这里主要介绍R-ggpubr包和R-ggpmisc包。内容如下:
ggpubr
R-ggpubr包之前的推文(统计绘图 | 一行代码教你绘制顶级期刊要求配图)也介绍其绘制科研图表的方便些,这次的推文则重点介绍其绘制表格的函数,当然还是可以和ggplot2图表对象一起展示的。如下:
「样例一」:
代码语言:javascript复制library(ggpubr)
df <- head(iris)
# Default table
# Remove row names using rows = NULL
ggtexttable(df, rows = NULL)
Example Of ggpubr::ggtexttable()
「样例二」:ttheme("mBlue")
代码语言:javascript复制ggtexttable(df, rows = NULL, theme = ttheme("mBlue"))
Example Of ggpubr::ggtexttable(theme = ttheme("mBlue"))
「样例三」:定义自己需要的表格
代码语言:javascript复制ggtexttable(df, rows = NULL,
theme = ttheme(
colnames.style = colnames_style(color = "white", fill = "#8cc257"),
tbody.style = tbody_style(color = "black", fill = c("#e8f3de", "#d3e8bb"))
)
)
Example Of ggpubr::ggtexttable() make table you want
更多其他案例大家可参考:R-ggpubr表格绘制[4]
ggpmisc
R-ggpmisc包中绘制表格的函数为stat_fit_tb(),其功能主要是一些统计结果和拟合结果进行表格展示,当然你也可以看下之前介绍的推文(统计绘图 | 一行代码教你绘制顶级期刊要求配图)。如下:
「样例一」:
代码语言:javascript复制library(ggpmisc)
library(ggrepel)
library(xts)
library(lubridate)
library(nlme)
library(quantreg)
library(broom)
library(broom.mixed)
set.seed(4321)
# generate artificial data
x <- 1:100
y <- (x x^2 x^3) rnorm(length(x), mean = 0, sd = mean(x^3) / 4)
my.data <- data.frame(x,
y,
group = c("A", "B"),
y2 = y * c(0.5,2),
block = c("a", "a", "b", "b"),
wt = sqrt(x))
可视化绘制:
代码语言:javascript复制formula <- y ~ x I(x^2) I(x^3)
plot04 <- ggplot(my.data, aes(x, y))
geom_point(shape=21,fill="#BC3C28",colour="black",size=3)
geom_smooth(method = "lm", formula = formula)
stat_fit_tb(method = "lm",
method.args = list(formula = formula),
tb.vars = c(Parameter = "term",
Estimate = "estimate",
"s.e." = "std.error",
"italic(t)" = "statistic",
"italic(P)" = "p.value"),
label.y = "top", label.x = "left",
parse = TRUE)
labs(
title = "Example of <span style='color:#D20F26'>ggpmisc::stat_fit_tb function</span>",
subtitle = "processed charts with <span style='color:#1A73E8'>stat_fit_tb()</span>",
caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>")
hrbrthemes::theme_ipsum(base_family = "Roboto Condensed")
theme(
plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
size = 20, margin = margin(t = 1, b = 12)),
plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
plot.caption = element_markdown(face = 'bold',size = 12)
)
Example01 Of ggpmisc::stat_fit_tb()
「样例二」:
代码语言:javascript复制ggplot(chickwts, aes(factor(feed), weight))
stat_summary(fun.data = "mean_se")
stat_fit_tb(tb.type = "fit.anova", label.x = "left", size = 3)
scale_x_discrete(expand = expansion(mult = c(0.2, 0.5)))
coord_flip()
labs(
title = "Example of <span style='color:#D20F26'>ggpmisc::stat_fit_tb function</span>",
subtitle = "processed charts with <span style='color:#1A73E8'>stat_fit_tb()</span>",
caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>")
hrbrthemes::theme_ipsum(base_family = "Roboto Condensed")
theme(
plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
size = 20, margin = margin(t = 1, b = 12)),
plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
plot.caption = element_markdown(face = 'bold',size = 12)
)
Example02 Of ggpmisc::stat_fit_tb()
更多其他案例大家可参考:R-ggpmisc表格绘制[5]
总结
这篇推文小编几乎汇总了R中所有关于表格(table)制作的所有方法,包括单独绘制以及和ggplot2对象一起组合的表格绘制,可能还有好多优秀的包没有介绍到哈~,希望可以给大家带来些许帮助哈~
参考资料
[1]
R-DT官网: https://rstudio.github.io/DT/。
[2]
R-gt官网: https://gt.rstudio.com/index.html。
[3]
R-sjPlot回归表格绘制: https://strengejacke.github.io/sjPlot/index.html。
[4]
R-ggpubr表格绘制: https://rpkgs.datanovia.com/ggpubr/reference/ggtexttable.html。
[5]
R-ggpmisc表格绘制: https://docs.r4photobiology.info/ggpmisc/reference/stat_fit_tb.html。