将闪亮与facet_grid结合起来

Jdi*_*ehl 0 r ggplot2 shiny facet-grid

我正在开展一个学校项目,其中有一些 dyplr 查询,我需要使用 Shiny 库使它们交互。现在我在 dyplr 中有一个查询,在那里我可以看到印度外卖餐厅每个国家的收入。我有以下查询:

```
df %>% 
  group_by(Origin, Jaar = year(Order.Date), Maand = month(Order.Date, label = TRUE), Kwartaal = quarter(Order.Date)) %>% 
  summarize(omzet = sum(regelomzet)) %>% 
  ggplot(aes(reorder(Origin, omzet), omzet)) +
  facet_grid(~Jaar) +
  geom_col() +
  ggtitle("Omzet per land van herkomst") +
  coord_flip() +
  theme(axis.text.x = element_text(angle = 90))
```
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出: 在此输入图像描述 现在,如果我将facet_grid更改为例如kwartaal(一年中的季度),我会得到以下输出: 在此输入图像描述 现在我想在交互式 Shiny 应用程序中应用此图。我为此使用以下代码:

```
```{r}
library(shiny)

ui <- fluidPage(
  titlePanel("Indian takeaway"),

  navlistPanel("Kies een plot",
    tabPanel("Omzet per land van herkomst", 
        selectInput(inputId = "Select_unit",
                   label = "Selecteer op basis van wat je de grafiek wilt zien",
                   choices = c("Jaar", "Kwartaal", "Maand"),
                   selected = "Jaar"
                   ),
       plotOutput(outputId = "plot3")
             )
  )
)

server <- function(input, output, session) {  
 output$plot3 <- renderPlot({
   df %>% 
  group_by(Origin, Jaar = year(Order.Date), Maand = month(Order.Date, label = TRUE), Kwartaal = quarter(Order.Date)) %>% 
  summarize(omzet = sum(regelomzet)) %>% 
  ggplot(aes(reorder(Origin, omzet), omzet)) +
  facet_grid(~input$Select_unit) +
  geom_col() +
  ggtitle("Omzet per land van herkomst") +
  coord_flip() +
  theme(axis.text.x = element_text(angle = 90))
 })  

}

shinyApp(ui, server)
```
Run Code Online (Sandbox Code Playgroud)

在这里,我制作了一个切片器并在 Shiny 应用程序上显示绘图。为了更改facet_wrap,我现在使用链接到输入框的输入函数,如果我更改输入框中的变量,我希望它显示如上面两张图片所示的图形。现在,如果我启动闪亮的应用程序,您可以看到首先没有任何facet_grid,甚至在标准变量上也没有。我的问题是它为什么这样做,因为我确实将其包含在我的查询中。因为我不知道我不知道如何解决这个问题并且已经用谷歌搜索了这个但找不到任何有用的东西 在此输入图像描述

Jdi*_*ehl 5

我在另一个堆栈溢出帖子上找到了以下信息: R Shiny: Issue with facet_wrap in ggplot

我使用facet_grid(~input$Select_unit),使用以下代码行问题将得到解决

facet_grid(~get(input$Select_unit))
Run Code Online (Sandbox Code Playgroud)