2017-04-20 68 views
1

我拼命嘗試更改rpivotTable包的默認顏色。我還在包的創建者的github上發佈了一個問題,但是還沒有人回答,所以如果有人知道如何解決這個問題,我會非常感激。更改rpivotTable閃爍的顏色

我的主要問題是改變了藍色在下面的變量選擇矩形:Example

有了這個功能,我發現在互聯網上,我設法改變整個背景,但不是具體總之,我要(光澤之外唯一至今):

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) 

回答

3

以下代碼會將淡藍色更改爲非常深的藍色。

您可以用類似的方式更改任何的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) 

請讓我知道這是否符合您的要求。

+0

是的!工作非常好!非常感謝你的回答! –