在Shiny中更改formattable表的宽度

时间:2018-04-20 13:42:24

标签: r shiny

我有以下Shiny Application:

library(shiny)


list1 <- c(0.2,0.8,0.5)
list2 <- c("element1", "element2", "element3")
df <- data.frame(list1, list2)

UI <- fluidPage(
  formattableOutput("table1")
)
Server <- function(input, output) {

  output$table1 <- renderFormattable({
    formattable(df, list(
      list1 = color_tile("green", "red") 
    ))
  })

}


shinyApp(ui = UI, server = Server)

这很好用。但是,我正在寻找一种设置列宽的方法。我可能会在文档中忽略它,但我找不到调整宽度的方法。

有关我应该如何更改它的任何反馈?

1 个答案:

答案 0 :(得分:2)

Shiny将它的代码呈现为HTML,因此您可以实际使用CSS来调整您想要更改后期渲染的任何美学。这是一个使用CSS的简单修复。

首先在app目录中创建一个目录www,然后创建一个名为styles.css的文件,该文件将作为您的CSS文件。将以下行添加到styles.css

table {
  width: 400px !important;
}

这会将应用中显示的所有表格的宽度调整为400px,您可以根据需要更改此值。接下来,将includeCSS("www/styles.css")添加到应用的UI部分,如下所示:

library(shiny)


list1 <- c(0.2,0.8,0.5)
list2 <- c("element1", "element2", "element3")
df <- data.frame(list1, list2)

UI <- fluidPage(
  includeCSS("www/styles.css"),
  formattableOutput("table1")
)
Server <- function(input, output) {

  output$table1 <- renderFormattable({
    formattable(df, list(
      list1 = color_tile("green", "red") 
    ))
  })

}


shinyApp(ui = UI, server = Server)

这将让Shiny知道在渲染页面时我们刚创建的文件中使用CSS。