更改光泽表中的值

问题描述 投票:0回答:1

我有一个简单的闪亮应用程序,我不知道为什么从列表中选择多个项目时图表上的值会发生变化。下面是我的示例和图表不正确的图像。

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

enter image description here

enter image description here

r ggplot2 shiny output
1个回答
0
投票

上面的数据集仅包含产品的'46',因此无法复制。但是,我怀疑问题在于您如何过滤数据,并允许使用selectizeInput进行多个输入。

现在您过滤数据:

df_trend <- data[data$Product == input$name, ]

如果input$name是单个值,则可以。但是,在有多个输入(例如46和92)的情况下,input$name包含这两个值,因此您需要进行另一种比较。

要基于多值匹配(例如匹配向量)对数据进行子集化,请尝试:

df_trend <- data[data$Product %in% input$name, ]
© www.soinside.com 2019 - 2024. All rights reserved.