【问题标题】:Why Datatable breaks the last bar using shiny?为什么 Datatable 使用闪亮打破最后一个酒吧?
【发布时间】:2019-10-16 08:41:10
【问题描述】:

我们有一个闪亮的应用程序,它封装了一个 DT,而 DT 又包含一个绿色条,如下图所示。有没有人在最后一行遇到同样的问题?我们已经启动并运行的其他应用程序运行良好。

【问题讨论】:

  • 你用来生成这张表的代码是什么?请编辑您的帖子并包含代码。

标签: r shiny dt


【解决方案1】:

您可能使用过styleColorBar。使用此函数,包含最小值的单元格的条的长度为 0,因此您得到的输出是预期的。要获得一个长度与值成正比的条形,您可以使用下面提供的我的函数styleColorBar2。该函数接受两种颜色,一种用于负值,另一种用于正值。

library(DT)

modelData <- data.frame(Channel = c("A", "B", "C"),
                        Current = c(2000, 3000, 4000),
                        Modified = c(2500, 3500, 3000),
                        New_Membership = c(500, 500, -1000),
                        stringsAsFactors = FALSE)

styleColorBar2 <- function (data, color1, color2) 
{
  M <- max(abs(data), na.rm = TRUE)
  js <- c(
    "value <= 0 ? ",  
    sprintf("'linear-gradient(90deg, transparent ' + (1+value/%f) * 100 + '%%, %s ' + (1+value/%f) * 100 + '%%)'", 
            M, color1, M),
    " : ",
    sprintf("'linear-gradient(90deg, transparent ' + (1-value/%f) * 100 + '%%, %s ' + (1-value/%f) * 100 + '%%)'", 
            M, color2, M) 
  )
  JS(js)
}

datatable(
  modelData , selection = 'none', editable = TRUE
) %>% formatStyle(
  'New_Membership',
  background = styleColorBar2(modelData$New_Membership, "red", "lightblue"),
  backgroundSize = '100% 50%',
  backgroundRepeat = 'no-repeat',
  backgroundPosition = 'center'
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    相关资源
    最近更新 更多