如何解决迷你图返回空白表
我试图将迷你图添加到一个简单的可反应示例中,但是当我尝试这样做时,表格返回空白。
我一直在关注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的数据的样子:
这是闪亮的应用程序:
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)
如果您删除此部分:
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))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。