R 闪亮的数据表过滤框大小缩小以查看文本
R shiny datatable filter box size to narrow to see text
我正在构建一个 R shiny 仪表板,当我使用 DT 包和 renderdatatable() 将数据放入 table 时。在每一列的顶部,我都有过滤器,搜索框太窄看不到文本和 select 一个选项。这是一张图片:
有谁知道增加宽度的方法吗?
这是我的数据代码 table server.r 中的代码:
output$table <- DT::renderDataTable(DT::datatable({
data <- rv$data
if (input$sour != "All") {
data <- data[data[,1] == input$sour,]
}else{data}
if (input$sour1 != "All") {
data <-data[data[,2] == input$sour1,]
}else{data}
if (input$tran != "All") {
data <-data[data[,3] == input$tran,]
}else{data}
},filter='top'))
这是 ui.r 中的代码:
tabItem(tabName = "ResultsTable",
fluidPage(
headerPanel(
h1("List", align="center", style = "font-family: 'Verdana';font-weight: 800; line-height: 1.1; color: #151515;")),
# fluidRow(
# column(8, DT::dataTableOutput("table",width = "100%"),offset = 2)))),
# # Create a new Row in the UI for selectInputs
fluidRow(
column(4,
selectInput("sour",
"Name:",
c("All",
unique(as.character(df[,1]))))
),
column(4,
selectInput("sour1",
"Number:",
c("All",
unique(as.character(df[,2]))))
),
column(4,
selectInput("tran",
"Code:",
c("All",
unique(as.character(df[,3])))))),
# Create a new row for the table.
fluidRow(column(11, DT::dataTableOutput("table",width = "95%")))))
我试过了,但没用:
output$table <- DT::renderDataTable(DT::datatable({
data <- rv$data
if (input$sour != "All") {
data <- data[data[,1] == input$sour,]
}else{data}
if (input$sour1 != "All") {
data <-data[data[,2] == input$sour1,]
}else{data}
if (input$tran != "All") {
data <-data[data[,3] == input$tran,]
}else{data}
},filter='top',options = list(
autoWidth = TRUE,
columnDefs = list(list(width = '200px', targets = "_all"))
)))
A similar question was answered here.
此外,为了 to use range sliders to filter rows within ranges,考虑使用 as.Date()
将 "Date List" 列转换为日期格式。
我使用 CSS 解决了这个问题:
input {
width: 100px !important;
}
您也可以将此样式仅应用于 factor
个过滤器:
td[data-type="factor"] input {
width: 100px !important;
}
将my.css
文件放入www
子目录,link放入其中:
shinyApp(
ui = fluidPage(
tags$head(
tags$link(
rel = "stylesheet",
type = "text/css",
href = "my.css")
),
DT::dataTableOutput(...)
)
这里宜慧的解决方案似乎很有效:
https://github.com/rstudio/DT/issues/172
datatable(..., options = list(autoWidth = TRUE))
我正在构建一个 R shiny 仪表板,当我使用 DT 包和 renderdatatable() 将数据放入 table 时。在每一列的顶部,我都有过滤器,搜索框太窄看不到文本和 select 一个选项。这是一张图片:
有谁知道增加宽度的方法吗?
这是我的数据代码 table server.r 中的代码:
output$table <- DT::renderDataTable(DT::datatable({
data <- rv$data
if (input$sour != "All") {
data <- data[data[,1] == input$sour,]
}else{data}
if (input$sour1 != "All") {
data <-data[data[,2] == input$sour1,]
}else{data}
if (input$tran != "All") {
data <-data[data[,3] == input$tran,]
}else{data}
},filter='top'))
这是 ui.r 中的代码:
tabItem(tabName = "ResultsTable",
fluidPage(
headerPanel(
h1("List", align="center", style = "font-family: 'Verdana';font-weight: 800; line-height: 1.1; color: #151515;")),
# fluidRow(
# column(8, DT::dataTableOutput("table",width = "100%"),offset = 2)))),
# # Create a new Row in the UI for selectInputs
fluidRow(
column(4,
selectInput("sour",
"Name:",
c("All",
unique(as.character(df[,1]))))
),
column(4,
selectInput("sour1",
"Number:",
c("All",
unique(as.character(df[,2]))))
),
column(4,
selectInput("tran",
"Code:",
c("All",
unique(as.character(df[,3])))))),
# Create a new row for the table.
fluidRow(column(11, DT::dataTableOutput("table",width = "95%")))))
我试过了,但没用:
output$table <- DT::renderDataTable(DT::datatable({
data <- rv$data
if (input$sour != "All") {
data <- data[data[,1] == input$sour,]
}else{data}
if (input$sour1 != "All") {
data <-data[data[,2] == input$sour1,]
}else{data}
if (input$tran != "All") {
data <-data[data[,3] == input$tran,]
}else{data}
},filter='top',options = list(
autoWidth = TRUE,
columnDefs = list(list(width = '200px', targets = "_all"))
)))
A similar question was answered here.
此外,为了 to use range sliders to filter rows within ranges,考虑使用 as.Date()
将 "Date List" 列转换为日期格式。
我使用 CSS 解决了这个问题:
input {
width: 100px !important;
}
您也可以将此样式仅应用于 factor
个过滤器:
td[data-type="factor"] input {
width: 100px !important;
}
将my.css
文件放入www
子目录,link放入其中:
shinyApp(
ui = fluidPage(
tags$head(
tags$link(
rel = "stylesheet",
type = "text/css",
href = "my.css")
),
DT::dataTableOutput(...)
)
这里宜慧的解决方案似乎很有效: https://github.com/rstudio/DT/issues/172
datatable(..., options = list(autoWidth = TRUE))