R:Shiny - 按来源绘制所选月份的访问量

R: Shiny - Plot visits by source for month selected

我无法在 Shiny 中为选定的特定月份绘制简单的条形图。

我有一个这样的数据框:(10 月、11 月和 12 月)

      month  Campanas1     Visitas
1   Octubre  Directo        9126
2   Octubre  Email          5753
3   Octubre  Referencias    75678
4   Octubre  SEO            81266
5   Octubre  Social Media   109

然后我想制作一个闪亮的应用程序,在选择月份时按来源显示访问量。这是我闪亮的文件:

我的ui.R:

# Define the overall UI
shinyUI(

# Use a fluid Bootstrap layout
fluidPage(    

# Give the page a title
titlePanel("Visitas por fuente"),

# Generate a row with a sidebar
sidebarLayout(      

  # Define the sidebar with one input



  sidebarPanel(
    selectInput("mes", "Mes:", 
                choices=as.character(unique(Visitas_Por_Fuente$month))),
    hr(),
    helpText("Seleccione el rango de fechas para ver la cantidad de visitas 
             totales.")
  ),

  # Create a spot for the barplot
  mainPanel(
    plotOutput("VisitasFuente")  
     )

   )
  )
)

我的 server.R 文件:

shinyServer(
  function(input, output) {

    output$VisitasFuente <- renderPlot({

     barplot(Visitas_Por_Fuente$Campanas1)

    })

  }
 )

首先,您尝试绘制变量 Compansa1,这是不可能的,因为条形图只能绘制在向量或矩阵上。

其次,您可以改用 ggplot 以获得更好的视觉效果。此外,您还必须根据用户选择的月份过滤数据框。

您的 server.R 文件应如下所示:

shinyServer(
  function(input, output) {

    output$VisitasFuente <- renderPlot({

    # Filter the data based on user selection month     
    appData <- Visitas_Por_Fuente[Visitas_Por_Fuente$month %in% input$mes, ]

     # Bar graph using ggplot2 library 
     ggplot(appData, aes(factor(Campanas1), Visitas, fill = Campanas1)) + 
            geom_bar(stat="identity", position = "dodge") + 
            scale_fill_manual(breaks = c("0", "1", "3", "6", "9"),
                              labels = c("Directo", "Email", "References",
                                         "SEO", "Social Media"),
                              values = c("#E69F00", "#56B4E9", "#009E73", 
                                         "#F0E442", "#0072B2"))
    })
  }
 )

runApp()的输出: