【问题标题】:How to display in shiny app a matrix, specifying the color with conditionals?如何在闪亮的应用程序中显示矩阵,用条件指定颜色?
【发布时间】:2018-03-04 01:28:33
【问题描述】:

我有一个包含正值和负值的矩阵 M。我正在尝试使用 DT 包在闪亮的应用程序中显示为表格。我想用不同的颜色显示矩阵。红色的正数和负数(例如)。

到目前为止,我只能以一对一的方式添加颜色。但我想以这种方式添加颜色:if matrix_values > 0 "color1", if matrix_values

 M <- matrix(c(-3:2), 3) # The matrix is more complex and it's created in a 
 reactive environment. Here is only an example

 M_out <- reactive({

 DT::datatable(M()) %>% 
   formatStyle(
     columns = c(1:7),
     backgroundColor = styleEqual(c( 0, 1), c("green", "red")
   ))
 })
 output$X_table_2 <- DT::renderDataTable(M_1X2())

谢谢!!

【问题讨论】:

    标签: r shiny dt


    【解决方案1】:

    您可以使用DT::styleInterval 代替DT::styleEqual

    library(DT)      # for datatable, formatStyle, styleInterval
    library(dplyr)   # for %>%
    
    myDT <- matrix(c(-3:2), 3) %>% datatable %>% 
      formatStyle(
        columns = 1:2,
        backgroundColor = styleInterval( 
          cuts = c(-.01, 0), 
          values = c("red", "white", "green")
        )
      )
    
    myDT
    

    在 RStudio 中运行这些行将在查看器窗格中显示格式化的矩阵。如果您不使用 RStudio,您还可以在闪亮的应用程序中显示表格。

    library(shiny)
    shinyApp(
      ui = fluidPage(DT::dataTableOutput('table'))
      server = function(input, output, session){
        output$table = DT::renderDataTable({myDT})
      }
    )
    

    【讨论】:

    • 谢谢。它工作正常。让我再问一个问题。实际上,我正在尝试显示尺寸等于 M 的矩阵 X。我想显示矩阵 X 而不是 M,而不是显示 M。这意味着:* color1 在 X 的单元格中,其中 M > 0 (X[M >0]) ,X 的单元格中的颜色2,其中 M
    • 是的,这是可能的,但不是很简单。您可以将 M 的列作为隐藏列添加到表中,并将它们用作formatStyle 中的valueColumns
    • 我刚刚更新了答案,讨论如何根据另一个矩阵 M 从矩阵 X 中提取。
    猜你喜欢
    • 2014-07-02
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多