Изменение цвета rpivotTable в Shiny
Я отчаянно пытаюсь изменить цвета по умолчанию для пакета rpivotTable. Я также опубликовал проблему в github создателя пакета, но никто еще не ответил, так что если у кого-то есть идея, как решить эту проблему, я буду более чем благодарен.
Моя основная проблема - изменение синих цветов в прямоугольниках под выбором переменной: Пример
С помощью этой функции, которую я обнаружил в интернете, мне удается изменить весь фон, но не конкретную вещь, которую я хочу (пока только за пределами Shiny):
style_widget <- function(hw=NULL, style="", addl_selector="") {
stopifnot(!is.null(hw), inherits(hw, "htmlwidget"))
# use current id of htmlwidget if already specified
elementId <- hw$elementId
if(is.null(elementId)) {
# borrow htmlwidgets unique id creator
elementId <- sprintf(
'htmlwidget-%s',
htmlwidgets:::createWidgetId()
)
hw$elementId <- elementId
}
htmlwidgets::prependContent(
hw,
htmltools::tags$style(
sprintf(
"#%s %s {%s}",
elementId,
addl_selector,
style
)
)
)
}
pivot_graph<-rpivotTable(mtcars)
browsable(
tagList(
style_widget(hw=pivot_graph, "background-color: rgb(245, 245, 245);", "table td")
)
)
Тем не менее, когда я пытаюсь сделать это блестяще, я не могу понять, что поместить, где и как это сделать (или даже если это вообще возможно с помощью этой функции). Любая помощь приветствуется. Мой блестящий код до сих пор:
library(shiny)
library(rpivotTable)
library(rvest)
ui <- fluidPage(
titlePanel("Cars"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose CSV File',
accept=c('text/csv','text/comma-separated-values,text/plain','.csv')),
actionButton("save1","Save Table 1")
# actionButton("save2","Save Table 2")
),
mainPanel(
tabsetPanel(
tabPanel("Pivot Table 1",
rpivotTableOutput("table")),
tabPanel("Pivot Table 2",
rpivotTableOutput("table2"))
)
)
)
)
server <- function(input, output,session)
{
session$onSessionEnded(stopApp)
observe({
file1 = input$file1
if (is.null(file1)) {
return(NULL)
}
st_data <<- read.csv(file1$datapath)
output$table <- renderRpivotTable({
rpivotTable(mtcars,
rendererName="Table",
onRefresh = htmlwidgets::JS("function(config) {Shiny.onInputChange('myData',
document.getElementById('table').innerHTML); }")
)
})
output$table2 <- renderRpivotTable({
rpivotTable(mtcars,aggregatorName="Average",
rendererName="Table",
onRefresh = htmlwidgets::JS("function(config) {Shiny.onInputChange('myData',
document.getElementById('table').innerHTML); }")
)
})
summarydf <- eventReactive(input$myData,{
input$myData %>%
read_html %>%
html_table(fill = TRUE) %>%
.[[2]]
})
observeEvent(input$save1, {
if(nrow(summarydf() )<1) return()
write.csv(summarydf(), file="./cars1.csv")
})
# summarydf1 <- eventReactive(input$myData1,{
# input$myData1 %>%
# read_html %>%
# html_table(fill = TRUE) %>%
# .[[4]]
# })
#
# observeEvent(input$save2, {
# if(nrow(summarydf1() )<1) return()
# write.csv(summarydf1(), file="./cars2.csv")
# })
})
}
shinyApp(ui = ui, server = server)
1 ответ
Следующий код изменит синий цвет на очень глубокий синий.
Вы можете изменить любой код pivot.min.css аналогичным образом: единственная задача - определить, какой элемент является правильным!
Чтобы изменить цвет, найдите цветовую карту JavaScript и измените #000080
к тому, что вам нужно.
library(shiny)
df <- iris
ui <- fluidPage(
tags$style(type="text/css",".pvtRows, .pvtCols { background: #000080 none repeat scroll 0 0; }" ),
fluidRow(
column(width=10, rpivotTableOutput("pivot"))
)
)
server <- function(input, output, session) {
output$pivot<-renderRpivotTable({
rpivotTable(df,
rendererName="Heatmap",
cols=c("Species"),
rows=c("Petal.Width"),
aggregatorName="Count"
)
})
}
shinyApp(ui = ui, server = server)
Пожалуйста, дайте мне знать, если это касается вашего требования.