闪亮的renderplot返回空白

时间:2020-07-29 20:11:48

标签: r shiny

我在生成闪亮的输出时遇到问题,我希望客户端根据客户的请求手动更改颜色,并且数据是反应性的。我只是得到一个空白页,除了selectInput过滤器和下拉菜单项外,什么都没有显示。

我的尝试是将lapply与colourpicker功能结合在一起,并创建了一个下拉菜单,用户可以在其中选择自己喜欢的颜色。不幸的是,我无法提供可复制的示例或数据集,因为存在无法共享的数据,我事先表示歉意。我希望有人可以通过查看代码来识别问题,以防它非常明显。总之,用于此示例的数据由三列组成:标题,伙伴,数量(例如,书名,打印书的伙伴和打印的份数)。

我相信在我在renderPlot内部生成绘图之前,它必须与“ cols”的3行代码有关。如果某人能带领我朝正确的方向前进,我将不胜感激。提前谢谢。

### 1) Loading the libraries ----

library(shinydashboard)
library(shiny)
library(shinyWidgets)
library(plotly)
library(colourpicker)
library(tidyverse)


###  UI ----


header <- 
  dashboardHeader( title = HTML("Dashboard"), 
                   disable = FALSE, 
                   titleWidth  = 230)


sidebar <- dashboardSidebar(
  sidebarMenu(id="sbmenu",
              menuItem("General Dashboard", tabName = "dashboard", icon = icon("dashboard"))))


body <- dashboardBody( 
  
  tabItems(
    tabItem(tabName = "dashboard",
            fluidRow(
              
              selectizeInput("choice","Please select", 
                          choices=levels(Complete$title),multiple=T)),
            

            fluidPage(
              uiOutput("myPanel"),
              plotOutput("plot")))))





## UI wrapper -----


ui <- dashboardPage(header, sidebar, body)


## Server ----

server <- function(input, output) {
  

data_complete<-reactive(Complete %>% 
                filter(title%in% input$choice,quantity>0))
  


### Plot 

output$myPanel <- renderUI({ 
    
  lev <- sort(unique(input$choice)) 
  
  cols <- length(lev)


  dropdownButton(lapply(seq_along(lev), function(i) {
      colourpicker::colourInput(inputId = paste0("col", lev[i]),
                  label = paste0("Choose colour", lev[i]), 
                  value = cols[i])}),
      circle = TRUE, size="xs",status = "danger", icon = icon("gear"), width = "50px",
      tooltip = tooltipOptions(title = "Change your colour"))
  })
  
  
output$plot <- renderPlot({

  cols <- paste0("c(", paste0("input$col", sort(input$choice), collapse = ", "), ")")
  
  cols <- eval(parse(text = cols))
  
  req(length(cols) == length(input$choice)) 
 

data_complete() %>% 
    group_by(title,partner) %>% 
    summarise(total=sum(quantity)) %>% 
    ggplot(aes(x=partner,y=total,fill=title))+
    geom_col(stat="identity",position = position_dodge())+
    scale_fill_manual(values = cols)
  })  



}


shinyApp(ui, server)




1 个答案:

答案 0 :(得分:0)

您的应用正常运行。我在代码的顶部添加了以下几行来模拟您的输入数据,并且效果很好。

Complete <- data.frame(
    title    = c("A", "B", "C", "D", "E", "F"), 
    partner  = c("1", "1", "2", "2", "3", "3"), 
    quantity = c(100, 200, 300, 400, 500, 600)
)

enter image description here

如果您更改标题选择,它确实会忘记颜色选择,并且有一些警告,但没有严重提示。

这意味着它导致您的问题。检查软件包是否为最新版本,数据可用于绘图,以及数据是否符合您的想法。调试这类事情的一种好方法是首先使其在闪亮的外部工作。

相关问题