【问题标题】:Change table contents' font size with formattable package from R使用 R 中的可格式化包更改表格内容的字体大小
【发布时间】:2021-04-26 22:42:17
【问题描述】:

假设一个数据框如下:

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 创建了一个表格,代码如下:

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 列的值设置字体大小,但现在我想将它应用于包括行名 在内的整个表格,我该怎么做?谢谢。

【问题讨论】:

    标签: r fonts font-size formattable


    【解决方案1】:

    您可以在table.attr 参数中全局定义表格的字体大小。
    您可以通过在 formatter 参数中定义字体大小来覆盖某些列的这些设置。就像您对 change 列所做的那样。

    在下面的示例中,表格字体大小设置为 16 像素,如 change 列。

    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;";\"')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 2023-03-18
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 2013-02-03
      • 2013-03-08
      相关资源
      最近更新 更多