结合闪亮与facet_grid

时间:2019-12-09 18:19:03

标签: 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))
```

这给了我以下输出: enter image description here 现在,如果将facet_grid更改为kwartaal(一年中的四分之一),则会得到以下输出: enter image description here 现在,我想将此图应用于交互式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)
```

在这里,我做了一个切片器,并在Shiny应用程序上显示了情节。要更改facet_wrap,我现在使用链接到输入框的输入函数,如果我在输入框中更改变量,我希望它能像上面的两张图片一样显示图形。 现在,如果我启动了闪亮的应用程序,您会看到,即使标准变量上也没有任何facet_grid。我的问题是为什么要这样做,因为我确实将其包括在查询中。因为我不知道,我不知道该如何解决这个问题,并且已经在Google上进行了搜索,但是找不到任何帮助 enter image description here

1 个答案:

答案 0 :(得分:0)

我在另一个堆栈溢出后发现了以下信息: R Shiny: Issue with facet_wrap in ggplot

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

facet_grid(~get(input$Select_unit))