我有一个简单的闪亮应用程序,我不知道为什么从列表中选择多个项目时图表上的值会发生变化。下面是我的示例和图表不正确的图像。
UI
library(shiny)
library(plotly)
shinyUI(fluidPage(
titlePanel("App test"),
sidebarPanel(
h3(" "),
selectizeInput("name",
label = "Code",
choices = unique(data$Product),
multiple = T,
options = list(maxItems = 5, placeholder = 'Select a code'),
selected = "46")
),
mainPanel(
plotOutput("trendPlot")
)
)
)
服务器
shinyServer(function(input, output, session) {
output$trendPlot <- renderPlot({
df_trend <- data[data$Product == input$name, ]
ggplot(df_trend) +
geom_line(aes(x = Month, y = Value, group = Product, colour = Product)) +
theme(legend.position = "bottom")
})
})
输入我的数据:
> head(data)
# A tibble: 6 x 3
Product Month Value
<chr> <chr> <dbl>
1 46 Jan 188
2 46 Feb 277
3 46 Mar 317
4 46 Apr 367
5 46 May 329
6 46 Jun 318
上面的数据集仅包含产品的'46',因此无法复制。但是,我怀疑问题在于您如何过滤数据,并允许使用selectizeInput
进行多个输入。
现在您过滤数据:
df_trend <- data[data$Product == input$name, ]
如果input$name
是单个值,则可以。但是,在有多个输入(例如46和92)的情况下,input$name
包含这两个值,因此您需要进行另一种比较。
要基于多值匹配(例如匹配向量)对数据进行子集化,请尝试:
df_trend <- data[data$Product %in% input$name, ]