我正在使用superhero
主题与下面的一行一起使用,这有助于使过滤器的文本颜色变为黑色,
ui <- fluidPage(
theme = shinytheme("superhero"),
tags$head(tags$style("div.dataTables_scrollHead span {color: black;}")),
...
)
1.然而,固定列(时间列1)的颜色并不与主题的颜色不一致。它是白色的,很难看到文字。我如何改变它来匹配超级英雄主题的颜色,或将其更改为更用户友好的颜色?
更新:,所以我设法更改了固定的列颜色,但是我希望一行是深蓝色,另一行是浅蓝色。加上行索引和列标题仍然是白色的,如下图所示。
output$mytable <- DT::renderDataTable(datatable(df,rownames = T,
filter="top",
extensions = "FixedColumns",style = 'bootstrap',
options = list(scrollX = TRUE, scrollY = TRUE,
autoWidth = F,
columnDefs = list(list(width = '145px', targets = c(1))),
fixedColumns=list(leftColumns=2)))
%>%formatRound(c(2:l_agg), 2)%>% formatStyle('Timestamp',backgroundColor='#2B3E50'))
更新图像
2.和现在的固定列( time )是character
类型的(从POSIXct
到字符),我试图将POSIXct
时间放在datatable
中,但时区不同。我应该如何使用POSIXct
类型的时间列并在datatable中正确地格式化它?
例如,这是我拥有的时间序列数据,理想情况下,我希望在没有CST部分的情况下显示如下所示的数据。
[1] "2020-04-06 09:31:20.000 CST" "2020-04-06 09:31:51.000 CST" "2020-04-06 09:32:21.000 CST" "2020-04-06 09:32:50.000 CST"
[5] "2020-04-06 09:33:21.000 CST" "2020-04-06 09:33:51.000 CST"
结构是
structure(c(1586136680.0005, 1586136711.0005, 1586136741.0005,
1586136770.0005, 1586136801.0005, 1586136831.0005), class = c("POSIXct",
"POSIXt"), tzone = "")
然而,在闪亮的,它显示如下,这不是我想要的。
发布于 2020-04-06 20:35:48
它真的需要是类Posixct
才能显示在表中吗?为什么不直接将其转换为CST时区,然后将日期转换为字符?
在关于您的行号为白色的第二个问题上,我们可以使用自定义的css
标记来定义行的颜色,并在tags$head(tags$style(HTML())))
中包含CSS。我们也可以添加您在这个调用中使用的CSS。请注意,这里定义的CSS会影响行号颜色。带有数据行的列的颜色由backgroundColor = styleEqual(df$Timestamp, row_colours)
定义。我们使用CSS将行号的颜色与行的其余部分的颜色相匹配。
library(shiny)
library(shinythemes)
library(data.table)
library(DT)
library(timeDate)
df <- structure(c(1586136680.0005, 1586136711.0005, 1586136741.0005,1586136861.0005, 1586136861.0005,
1586136801.0005, 1586136831.0005, 1586136861.0005), class = c("POSIXct",
"POSIXt"), tzone = "")
df <- data.frame(Timestamp = df)
df$Timestamp <- as.character(.POSIXct(df$Timestamp-3600*7, tz="CST6CDT"))
l_agg <- 10
ui <- fluidPage(
tags$head(tags$style(HTML('
table th {
background:#4e5d6c;
}
table tr:nth-child(odd) td{
background:#2B3E50;
}
table tr:nth-child(even) td{
background:#4e5d6c;
}
div.dataTables_scrollHead span {color: black;}
'))),
theme = shinytheme("superhero"),
DT::dataTableOutput("mytable")
)
if (!round(length(df$Timestamp)/2,0) %% 2) {
row_colours <- rep(c('#2B3E50', '#4e5d6c'), length(df$Timestamp)/2)
} else {
row_colours <- rep(c('#2B3E50', '#4e5d6c'), round(length(df$Timestamp)/2,0))[-length(df$Timestamp)]
}
server <- function(input, output, session) {
output$mytable <- DT::renderDataTable(DT::datatable(df,rownames = T,
filter="top",
extensions = "FixedColumns",style = 'bootstrap',
options = list(scrollX = TRUE, scrollY = TRUE,
autoWidth = F,
columnDefs = list(list(width = '1444px', targets = c(1))),
fixedColumns=list(eftColumns=1)))
%>%formatRound(c(2:l_agg), 2)%>% formatStyle('Timestamp',backgroundColor = styleEqual(df$Timestamp, row_colours)))
}
shinyApp(ui, server)
https://stackoverflow.com/questions/61054973
复制相似问题