我在生成闪亮的输出时遇到问题,我希望客户端根据客户的请求手动更改颜色,并且数据是反应性的。我只是得到一个空白页,除了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)
答案 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)
)
如果您更改标题选择,它确实会忘记颜色选择,并且有一些警告,但没有严重提示。
这意味着它导致您的问题。检查软件包是否为最新版本,数据可用于绘图,以及数据是否符合您的想法。调试这类事情的一种好方法是首先使其在闪亮的外部工作。