使用 R 中的格式 table 包更改 table 内容的字体大小
Change table contents' font size with formattable package from R
假设数据帧如下:
df <- structure(list(week1 = c(30, 74.62, 189.93, 2394.91, 6095.8,
2.88, 45.49), week2 = c(30, 88.4, 156.14, 2880.4, 5087.41, 7.98,
44.97), change = structure(c(0, -0.1559, 0.2164, -0.1685,
0.1982, -0.6391, 0.0114), formattable = list(formatter = "formatC",
format = list(format = "f", digits = 2L), preproc = "percent_preproc",
postproc = "percent_postproc"), class = c("formattable",
"numeric"))), row.names = c("v1", "v2", "v3", "v4", "v5", "v6", "v7"), class = "data.frame")
我用 formattable
创建了一个 table,代码如下:
formattable(df,
list(~ formatter("span",
style = x ~ formattable::style(display = "block",
"border-radius" = "10px",
"padding" = "10px",
"text-align" = "center")),
week2 = color_tile("white", "orange"),
week1 = color_tile("white", "orange"),
`change` = formatter("span",
style = ~ style(color = ifelse(`week2` > `week1`, "green", "red"), "font.weight" = "bold", "font.size" = "16px"),
~ icontext(sapply(`change`, function(x) if (x < 0) "arrow-down" else if (x > 0) "arrow-up" else ""), `change`))))
输出:
我可以为 change
列的值设置字体大小,但现在我想将其应用于整个 table,包括 行名称 ,我怎么能那样做?谢谢。
您可以在 table.attr
参数中定义 table 全局字体大小。
您可以通过在 formatter
参数中定义字体大小来覆盖某些列的这些设置。就像您对 change
列所做的那样。
在下面的示例中,table 字体大小像 change
列一样设置为 16px。
df <- data.frame(week1 = c(30, 74.62, 189.93, 2394.91, 6095.8, 2.88, 45.49),
week2 = c(30, 88.4, 156.14, 2880.4, 5087.41, 7.98, 44.97),
change = c(0, -0.1559, 0.2164, -0.1685, 0.1982, -0.6391, 0.0114))
rownames(df) <- LETTERS[1:7]
formattable(df,
list(week2 = color_tile("white", "orange"),
week1 = color_tile("white", "orange"),
`change` = formatter("span",
style = ~ style(color = ifelse(`week2` > `week1`, "green", "red"), "font.weight" = "bold", "font.size" = "16px"),
~ icontext(sapply(`change`, function(x) if (x < 0) "arrow-down" else if (x > 0) "arrow-up" else ""), `change`))),
table.attr = 'style="font-size: 16px;";\"')
假设数据帧如下:
df <- structure(list(week1 = c(30, 74.62, 189.93, 2394.91, 6095.8,
2.88, 45.49), week2 = c(30, 88.4, 156.14, 2880.4, 5087.41, 7.98,
44.97), change = structure(c(0, -0.1559, 0.2164, -0.1685,
0.1982, -0.6391, 0.0114), formattable = list(formatter = "formatC",
format = list(format = "f", digits = 2L), preproc = "percent_preproc",
postproc = "percent_postproc"), class = c("formattable",
"numeric"))), row.names = c("v1", "v2", "v3", "v4", "v5", "v6", "v7"), class = "data.frame")
我用 formattable
创建了一个 table,代码如下:
formattable(df,
list(~ formatter("span",
style = x ~ formattable::style(display = "block",
"border-radius" = "10px",
"padding" = "10px",
"text-align" = "center")),
week2 = color_tile("white", "orange"),
week1 = color_tile("white", "orange"),
`change` = formatter("span",
style = ~ style(color = ifelse(`week2` > `week1`, "green", "red"), "font.weight" = "bold", "font.size" = "16px"),
~ icontext(sapply(`change`, function(x) if (x < 0) "arrow-down" else if (x > 0) "arrow-up" else ""), `change`))))
输出:
我可以为 change
列的值设置字体大小,但现在我想将其应用于整个 table,包括 行名称 ,我怎么能那样做?谢谢。
您可以在 table.attr
参数中定义 table 全局字体大小。
您可以通过在 formatter
参数中定义字体大小来覆盖某些列的这些设置。就像您对 change
列所做的那样。
在下面的示例中,table 字体大小像 change
列一样设置为 16px。
df <- data.frame(week1 = c(30, 74.62, 189.93, 2394.91, 6095.8, 2.88, 45.49),
week2 = c(30, 88.4, 156.14, 2880.4, 5087.41, 7.98, 44.97),
change = c(0, -0.1559, 0.2164, -0.1685, 0.1982, -0.6391, 0.0114))
rownames(df) <- LETTERS[1:7]
formattable(df,
list(week2 = color_tile("white", "orange"),
week1 = color_tile("white", "orange"),
`change` = formatter("span",
style = ~ style(color = ifelse(`week2` > `week1`, "green", "red"), "font.weight" = "bold", "font.size" = "16px"),
~ icontext(sapply(`change`, function(x) if (x < 0) "arrow-down" else if (x > 0) "arrow-up" else ""), `change`))),
table.attr = 'style="font-size: 16px;";\"')