dmg88
dmg88

Reputation: 23

R Shiny not plotting at all

I'm new to shiny and I'm trying to use it for a simulation of a prey/predator model.

First, I wanted to generate the dataframe with all the initial positions for each animal; and try to plot it usign ggplot; but when I hit the actionButton, the plot never showed. I dont interstand why and there is any error message to let me at least know what is wrong.

Here is the code:

library(shiny)
library(tidyverse)
library(ggplot2)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      sliderInput("nPrey", "select total number of preys", 1, 100, 10, 1),
      sliderInput("nHunter", "select total number of Hunters", 1, 100, 10, 1),
      actionButton ("play", "Begin simulation")
    ),  
    mainPanel(
      plotOutput("plot")
    )
  )
)

server <- function(input, output, session) {
  zMax = 20   
  simulation <- eventReactive(input$play, {
    createInitialTable(input$nPrey, input$nHunter)  
  })
  output$plot <- renderPlot({    
    p <- ggplot() +   
      geom_point(aes_string(x="X",y="Y"), data=simulation()) +  
      coord_cartesian(xlim =c(0, zMax), ylim = c(0, zMax)) 
  }) 
  createInitialTable <- function (nPrey, nHunter){ 
    aAnimal <- data.frame() 
    cVar <- c("X", "Y")  
    for (i in 1:nPrey){  
      aAnimal <- rbind(aAnimal, c(round(runif(1)*zMax), round(runif(1)*zMax)))
    }
    for (i in 1:nHunter){
      aAnimal <- rbind(aAnimal, c(round(runif(1)*zMax), round(runif(1)*zMax)))
    }
    colnames(aAnimal) <- cVar
    return (aAnimal)  
  }
}

shinyApp(ui, server)

Thank you for reading this

Upvotes: 2

Views: 44

Answers (1)

Kamran Esmaeili
Kamran Esmaeili

Reputation: 68

Simple fix: Remove p <- and you should be good to go. However, to improve you need to check the reactivity of your execution when the nPrey and Hunter are dynamically changing.

Upvotes: 2

Related Questions