首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sparkline返回空白表

Sparkline返回空白表
EN

Stack Overflow用户
提问于 2020-09-24 07:24:05
回答 1查看 227关注 0票数 1

我试图在一个简单的可达示例中添加火花线,但当我尝试这样做时,该表返回为空。

我一直在跟踪文档中的这个示例

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

代码语言:javascript
复制
    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-1", "550-1", "550-1", "550-2", "550-2", "550-2", "550-2", "550-3", "550-4", "550-4", "550-4")
    Size <- c(10, 10, 10, 10, 10, 15, 5, 10, 5, 2, 6, 6, 6)
    Date <- as.Date(c("2020/10/01", "2020/12/01", "2021/01/01", "2021/03/01", "2021/04/01", "2020/12/01", "2021/03/01", "2021/04/01", "2021/06/01", "2020/11/01", "2020/10/01", "2020/11/01", "2020/12/01"))
    orders <- data.frame(PartName, Size, Date)

这就是我要传递给可达的数据的样子:

这是一个闪亮的应用程序:

代码语言:javascript
复制
    library(shiny)
    library(shinydashboard)
    library(sparkline)
    library(dplyr)
    library(tidyr)
    
    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-1", "550-1", "550-1", "550-2", "550-2", "550-2", "550-2", "550-3", "550-4", "550-4", "550-4")
    Size <- c(10, 10, 10, 10, 10, 15, 5, 10, 5, 2, 6, 6, 6)
    Date <- as.Date(c("2020/10/01", "2020/12/01", "2021/01/01", "2021/03/01", "2021/04/01", "2020/12/01", "2021/03/01", "2021/04/01", "2021/06/01", "2020/11/01", "2020/10/01", "2020/11/01", "2020/12/01"))
    orders <- data.frame(PartName, Size, 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]], type = "bar", chartRangeMin = 0, chartRangeMax = 12)
                #     })
            ))
        })
    }
    
    shinyApp(ui = ui, server = server)

结果:

如果您删除此部分:

代码语言:javascript
复制
    ORDRS = colDef(cell = function(values) {
        sparkline(values, type = "bar", chartRangeMin = 0, chartRangeMax = 12)
         })

然后这张桌子就会呈现得很好。

reactable参考手册中,这是colDef函数的cell参数的定义:

cell:自定义单元格渲染器。以单元格值、行索引和列名作为参数的R函数,或以单元格信息对象作为参数的JS()函数。

我不知道是怎么回事。你能帮我找出我的错误吗?

诚挚的问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-28 08:11:10

愚蠢的错误,sparkline需要一个数字列表而不是字符列表。

更改:

代码语言:javascript
复制
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))

适用于:

代码语言:javascript
复制
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::summarise(ORDRS = list(Size))

现在它显示了好的:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64041418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档