微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

迷你图返回空白表

如何解决迷你图返回空白表

我试图将迷你图添加一个简单的可反应示例中,但是当我尝试这样做时,表格返回空白。

我一直在关注this example from the documentation

这是我正在使用的示例数据:

    PartName <- c("550-1","550-2","550-3","550-4")
    Orders <- c(50,35,2,18)
    condensed <- data.frame(PartName,Orders)
    
    PartName <- c("550-1","550-1","550-4","550-4")
    Size <- c(10,10,15,5,6,6)
    Date <- as.Date(c("2020/10/01","2020/12/01","2021/01/01","2021/03/01","2021/04/01","2021/06/01","2020/11/01","2020/10/01","2020/12/01"))
    orders <- data.frame(PartName,Size,Date)

这是我传递给Reactable的数据的样子:

data

这是闪亮的应用程序:

    library(shiny)
    library(shinydashboard)
    library(sparkline)
    library(dplyr)
    library(tidyr)
    
    PartName <- c("550-1",Date)
    
    df <- orders %>%
        dplyr::mutate(Date = format(Date,"%Y-%m-%d")) %>%
        dplyr::group_by(PartName) %>%
        tidyr::complete(Date = c('2020-09-01','2020-10-01','2020-11-01','2020-12-01','2021-01-01','2021-02-01','2021-03-01','2021-04-01','2021-05-01','2021-06-01','2021-07-01','2021-08-01'),fill = list(Size = 0)) %>%
        as.data.frame() %>%
        dplyr::group_by(PartName) %>%
        dplyr::summarize(ORDRS = paste0(Size,collapse = ",")) %>% 
        dplyr::group_by(PartName) %>%
        dplyr::summarise(ORDRS = list(ORDRS))
    
    data <- condensed %>%
        left_join(df,by = c("PartName" = "PartName"))
    
    
    ui <- dashboardPage(
        
        dashboardHeader(title = "Title"),dashboardSidebar(
            sidebarMenu(),collapsed = TRUE
        ),dashboardBody(
            fluidRow(
                Box(
                    title = "Table with sparklines",status = "primary",solidHeader = TRUE,collapsible = TRUE,width = 12,reactableOutput("table")
                )
            )
        )
    )
    
    server <- function(input,output) {
        
        output$table <- renderReactable({
            reactable(data,columns = list(
                PartName = colDef(name = PN),Orders = colDef(name = Orders),ORDRS = colDef(cell = function(values) {
                    sparkline(values,type = "bar",chartRangeMin = 0,chartRangeMax = 12)
                     })
                # ORDRS = colDef(cell = function(value,index) {
                #     sparkline(data$ORDRS[[index]],chartRangeMax = 12)
                #     })
            ))
        })
    }
    
    shinyApp(ui = ui,server = server)

结果:

blank_table

如果您删除此部分:

    ORDRS = colDef(cell = function(values) {
        sparkline(values,chartRangeMax = 12)
         })

然后表格呈现良好。

reactable's reference manual中,这是cell函数colDef自变量的定义:

cell自定义单元格渲染器。 R函数采用像元值, 行索引和列名作为参数,或者使用JS()函数 单元格信息对象作为参数。

我看不出有什么问题。你能帮我发现我的错误吗?

最诚挚的问候。

解决方法

严重错误,sparkline需要一个数字列表,而不是一个字符列表。

更改:

df <- orders %>%
    dplyr::mutate(Date = format(Date,"%Y-%m-%d")) %>%
    dplyr::group_by(PartName) %>%
    tidyr::complete(Date = c('2020-09-01','2020-10-01','2020-11-01','2020-12-01','2021-01-01','2021-02-01','2021-03-01','2021-04-01','2021-05-01','2021-06-01','2021-07-01','2021-08-01'),fill = list(Size = 0)) %>%
    as.data.frame() %>%
    dplyr::group_by(PartName) %>%
    dplyr::summarize(ORDRS = paste0(Size,collapse = ",")) %>% 
    dplyr::group_by(PartName) %>%
    dplyr::summarise(ORDRS = list(ORDRS))

针对:

df <- orders %>%
    dplyr::mutate(Date = format(Date,fill = list(Size = 0)) %>%
    as.data.frame() %>%
    dplyr::group_by(PartName) %>%
    dplyr::summarise(ORDRS = list(Size))

现在它显示正常: sparklines

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。