如何在 R Markdown 中为 Reactable 表格添加标题
How to add titles to Reactable tables in R Markdown
对于本周的 TidyTuesday 挑战,我一直在尝试使用 reactable
包制作一个 table。为此,我查看了一些关于在 R 中使用 reactable
制作 table 的博客文章,我取得了一些进展,特别是在自定义背景颜色等方面。然而,尽管我尝试了 two-three 天,我无法在 reactable
包中添加和自定义标题。我看过的博客给出了一些例子。例如,in one example,给出下面的代码块来制作一个漂亮的table。
library(reactable)
library(htmltools)
library(tidyverse)
library(dplyr)
playoff_salary <- read_csv("https://raw.githubusercontent.com/jthomasmock/radix_themockup/master/_posts/2020-05-13-qb-salaries-vs-playoff-appearances/playoff_salary.csv")
make_color_pal <- function(colors, bias = 1) {
get_color <- colorRamp(colors, bias = bias)
function(x) rgb(get_color(x), maxColorValue = 255)
}
good_color <- make_color_pal(c("#ffffff", "#f2fbd2", "#c9ecb4", "#93d3ab", "#35b0ab"), bias = 2)
tbl <- playoff_salary %>%
arrange(desc(salary)) %>%
mutate(
`Salary Rank` = rank(desc(salary)),
salary = round(salary, 1)
) %>%
select(`Salary Rank`, player:Superbowl, everything()) %>%
reactable(
pagination = FALSE,
compact = TRUE,
borderless = FALSE,
striped = FALSE,
fullWidth = FALSE,
theme = reactableTheme(
headerStyle = list(
"&:hover[aria-sort]" = list(background = "hsl(0, 0%, 96%)"),
"&[aria-sort='ascending'], &[aria-sort='descending']" = list(background = "hsl(0, 0%, 96%)"),
borderColor = "#555"
)
),
defaultColDef = colDef(
align = "center",
minWidth = 100
),
columns = list(
salary = colDef(
name = "Salary",
style = function(value) {
value
normalized <- (value - min(playoff_salary$salary)) / (max(playoff_salary$salary) - min(playoff_salary$salary))
color <- good_color(normalized)
list(background = color)
},
cell = JS("function(cellInfo) {
return cellInfo.value + 'M'}")
),
Total = colDef(
style = function(value) {
value
normalized <- (value - min(playoff_salary$Total)) / (max(playoff_salary$Total) - min(playoff_salary$Total))
color <- good_color(normalized)
list(background = color)
},
class = "border-left"
),
player = colDef(
name = "Name",
minWidth = 140,
align = "left"
)
)
)
div(
class = "salary",
div(
class = "title",
h2("2014-2019 Salary and Playoff Appearances"),
"QBs limited to playoff games where they threw a pass"
),
tbl,
tags$span(style = "color:#C8C8C8", "TABLE: @THOMAS_MOCK | DATA: PRO-FOOTBALL-REFERENCE.COM & OVERTHECAP.COM")
)
tags$link(href = "https://fonts.googleapis.com/css?family=Karla:400,700|Fira+Mono&display=fallback", rel = "stylesheet")
.salary {
font-family: Karla, "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
}
.number {
font-family: "Fira Mono", Consolas, Monaco, monospace;
font-size: 16px;
line-height: 30px;
white-space: pre;
}
.title {
margin: 18px 0;
font-size: 16px;
}
.title h2 {
font-size: 20px;
font-weight: 600;
}
.header:hover,
.header[aria-sort="ascending"],
.header[aria-sort="descending"] {
background-color: #eee;
}
.salary-table {
margin-bottom: 20px;
}
/* Align header text to the bottom */
.header,
.group-header {
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.header {
border-bottom-color: #555;
font-size: 13px;
font-weight: 400;
text-transform: uppercase;
}
/* Highlight headers when sorting */
.header:hover,
.header[aria-sort="ascending"],
.header[aria-sort="descending"] {
background-color: #eee;
}
.border-left {
border-left: 2px solid #555;
}
/* Use box-shadow to create row borders that appear behind vertical borders */
.cell {
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
}
虽然我能够重现相同的 table 直到 div
代码块的开头,但我在 R Markdown 文档中这样做了,因为我读到它在原始 R 中不起作用,我无法在其余部分这样做。我无法像在本例中那样向我的 table 添加标题和其他很酷的东西。我希望我清楚我的问题,非常感谢你帮助重现这个例子。
修改这个:
.title h2 {
font-family: "Fira Mono";
font-size: 20px;
font-weight: 600;
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: solid 1px #d3d3d3;
}
对于本周的 TidyTuesday 挑战,我一直在尝试使用 reactable
包制作一个 table。为此,我查看了一些关于在 R 中使用 reactable
制作 table 的博客文章,我取得了一些进展,特别是在自定义背景颜色等方面。然而,尽管我尝试了 two-three 天,我无法在 reactable
包中添加和自定义标题。我看过的博客给出了一些例子。例如,in one example,给出下面的代码块来制作一个漂亮的table。
library(reactable)
library(htmltools)
library(tidyverse)
library(dplyr)
playoff_salary <- read_csv("https://raw.githubusercontent.com/jthomasmock/radix_themockup/master/_posts/2020-05-13-qb-salaries-vs-playoff-appearances/playoff_salary.csv")
make_color_pal <- function(colors, bias = 1) {
get_color <- colorRamp(colors, bias = bias)
function(x) rgb(get_color(x), maxColorValue = 255)
}
good_color <- make_color_pal(c("#ffffff", "#f2fbd2", "#c9ecb4", "#93d3ab", "#35b0ab"), bias = 2)
tbl <- playoff_salary %>%
arrange(desc(salary)) %>%
mutate(
`Salary Rank` = rank(desc(salary)),
salary = round(salary, 1)
) %>%
select(`Salary Rank`, player:Superbowl, everything()) %>%
reactable(
pagination = FALSE,
compact = TRUE,
borderless = FALSE,
striped = FALSE,
fullWidth = FALSE,
theme = reactableTheme(
headerStyle = list(
"&:hover[aria-sort]" = list(background = "hsl(0, 0%, 96%)"),
"&[aria-sort='ascending'], &[aria-sort='descending']" = list(background = "hsl(0, 0%, 96%)"),
borderColor = "#555"
)
),
defaultColDef = colDef(
align = "center",
minWidth = 100
),
columns = list(
salary = colDef(
name = "Salary",
style = function(value) {
value
normalized <- (value - min(playoff_salary$salary)) / (max(playoff_salary$salary) - min(playoff_salary$salary))
color <- good_color(normalized)
list(background = color)
},
cell = JS("function(cellInfo) {
return cellInfo.value + 'M'}")
),
Total = colDef(
style = function(value) {
value
normalized <- (value - min(playoff_salary$Total)) / (max(playoff_salary$Total) - min(playoff_salary$Total))
color <- good_color(normalized)
list(background = color)
},
class = "border-left"
),
player = colDef(
name = "Name",
minWidth = 140,
align = "left"
)
)
)
div(
class = "salary",
div(
class = "title",
h2("2014-2019 Salary and Playoff Appearances"),
"QBs limited to playoff games where they threw a pass"
),
tbl,
tags$span(style = "color:#C8C8C8", "TABLE: @THOMAS_MOCK | DATA: PRO-FOOTBALL-REFERENCE.COM & OVERTHECAP.COM")
)
tags$link(href = "https://fonts.googleapis.com/css?family=Karla:400,700|Fira+Mono&display=fallback", rel = "stylesheet")
.salary {
font-family: Karla, "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
}
.number {
font-family: "Fira Mono", Consolas, Monaco, monospace;
font-size: 16px;
line-height: 30px;
white-space: pre;
}
.title {
margin: 18px 0;
font-size: 16px;
}
.title h2 {
font-size: 20px;
font-weight: 600;
}
.header:hover,
.header[aria-sort="ascending"],
.header[aria-sort="descending"] {
background-color: #eee;
}
.salary-table {
margin-bottom: 20px;
}
/* Align header text to the bottom */
.header,
.group-header {
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.header {
border-bottom-color: #555;
font-size: 13px;
font-weight: 400;
text-transform: uppercase;
}
/* Highlight headers when sorting */
.header:hover,
.header[aria-sort="ascending"],
.header[aria-sort="descending"] {
background-color: #eee;
}
.border-left {
border-left: 2px solid #555;
}
/* Use box-shadow to create row borders that appear behind vertical borders */
.cell {
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
}
虽然我能够重现相同的 table 直到 div
代码块的开头,但我在 R Markdown 文档中这样做了,因为我读到它在原始 R 中不起作用,我无法在其余部分这样做。我无法像在本例中那样向我的 table 添加标题和其他很酷的东西。我希望我清楚我的问题,非常感谢你帮助重现这个例子。
修改这个:
.title h2 {
font-family: "Fira Mono";
font-size: 20px;
font-weight: 600;
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: solid 1px #d3d3d3;
}