更改R DataTables(DT)中的字体大小

tme*_*sis 12 formatting r r-markdown dt

一直在尝试更改DT生成的表中所有文本的字体大小.但是,我只能弄清楚如何使用更改记录的大小 formatStyle(names(datCalc), fontSize = '12px').列标题和按钮具有相同大小的文本.在RStudio中使用R Markdown.

Jua*_*bez 14

我想你差不多到了那里.我通过明确告诉DT::formatStyle()我想要哪些列来解决它.我第一次尝试使用names()或者colnames()方法,就像你一样.出于某种原因,这不起作用:

iris %>%
  DT::datatable() %>%
  DT::formatStyle(columns = colnames(.), fontSize = '50%')
Run Code Online (Sandbox Code Playgroud)

但是,我们知道iris数据集有5列,所以我只是这样做:

iris %>%
  DT::datatable() %>%
  DT::formatStyle(columns = c(1, 2, 3, 4, 5), fontSize = '50%')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我使用font-size = 50%,但你也可以font-size = 12pt像你一样指定.您还可以提供c(T, F, F, F, T)columns参数类似的逻辑向量,格式将应用于您声明的那些列TRUE.

  • `colnames(.)` 不起作用的原因是管道不返回 `iris`,而是返回任何 `DT::datatable()` 返回(即列表)。如果你写 `colnames(iris)`,它会起作用。 (4认同)

Vla*_*lad 11

以 Antex 和 sabeepa 给出的答案为基础。如果您想更改所有内容的字体大小,包括表格本身之外的 DT 组件,请使用table().container(). 所以代码看起来像这样:

font.size <- "10pt"

df %>% 
   DT::datatable(
     options=list(
       initComplete = htmlwidgets::JS(
          "function(settings, json) {",
          paste0("$(this.api().table().container()).css({'font-size': '", font.size, "'});"),
          "}")
       ) 
     )
Run Code Online (Sandbox Code Playgroud)


小智 10

通过 javascript 表头调用添加 CSS 似乎可以解决问题(即 'this.api().table().header()' )。

datatable(..., options=list(
  initComplete = JS(
        "function(settings, json) {",
        "$(this.api().table().header()).css({'font-size': '50%'});",
        "}")))
  )
Run Code Online (Sandbox Code Playgroud)

引文:第 4.3 节 @ https://rstudio.github.io/DT/options.html


Ant*_*tex 5

通过使用JS表和列内容字体大小更改CSS,可以更改页眉和页脚,formatStyle如下所示。但是,页眉和页脚的字体大小保持不变。我想一口气更改页眉/页脚/正文(表格的整个字体)。那可能吗?

datatable(head(iris, 20), options = list(
  initComplete = JS(
    "function(settings, json) {",
    "$(this.api().table().header()).css({'font-size': '5px', 'background-color': '#c2d1f0', 'color': '#fff'});",
    "}"))) %>%  formatStyle(columns = colnames(.$x$data), `font-size` = '12px')
Run Code Online (Sandbox Code Playgroud)

尝试使用以下命令更新列的CSS,但未成功

"$(this.api().columns().data()).css({'font-size': '5px'});"

"$(this.api().table().footer()).css({'font-size': '10px});"

"$(this.api().tables().body()).css({'font-size': '10px'});"
Run Code Online (Sandbox Code Playgroud)