I have two map plots of 'Total Population' and 'Population Density' created using a shape file. Now, I'm trying to build a shiny app so that I can change from Total Population to Population Density and the plot should change accordingly. When I ran the code, i got following error code:
Warning: Error in : ggplot2 doesn't know how to deal with data of class matrix
Here's the code that i've been trying to use:
library(shiny)
library(ggplot2) #Loading necessary libraries
ui <- fluidPage(
  selectInput("mr",
              label="Type of Plot",
              choices=c("Total Population", "Density"),
              selected="Total Population"),
  plotOutput("curv") #Giving an input name and listing out types to choose in the Shiny app
)
server <- function(input, output){
  output$curv <- renderPlot({
    ggplot() +
      geom_polygon(data = final.plot==input$mr, 
                   aes(x = long, y = lat, group = group, fill = Population), 
                   color = "black", size = 0.20) + 
      coord_map()+
      scale_fill_distiller(name="Population", palette = "YlGn")+
      labs(title="Population in Australia")
  }) # Output with the data file and input string to change when input changes.
}
shinyApp(ui = ui, server = server)
Any help is greatly appreciated.
UPDATE:
My dataset looks like this:
     id     long       lat order  hole piece
1 Ashmore and Cartier Islands 123.1169 -12.25333     1 FALSE     1
2 Ashmore and Cartier Islands 123.1206 -12.25611     2 FALSE     1
3 Ashmore and Cartier Islands 123.1222 -12.25861     3 FALSE     1
4 Ashmore and Cartier Islands 123.1239 -12.25528     4 FALSE     1
5 Ashmore and Cartier Islands 123.1258 -12.25333     5 FALSE     1
6 Ashmore and Cartier Islands 123.1275 -12.25619     6 FALSE     1
                          group Population Density
1 Ashmore and Cartier Islands.1         NA      NA
2 Ashmore and Cartier Islands.1         NA      NA
3 Ashmore and Cartier Islands.1         NA      NA
4 Ashmore and Cartier Islands.1         NA      NA
5 Ashmore and Cartier Islands.1         NA      NA
6 Ashmore and Cartier Islands.1         NA      NA
This is stored in the DataFrame called "final.plot". There's values of Population and Density for other states. I was able to create a static visualisation of Population and it looks like this:
There's a similar one for Density and I'm trying to create Shiny app where i can switch between these two so that the plot changes accordingly. Right now I've tried the following code:
library(shiny)
library(ggplot2) #Loading necessary libraries
ui <- fluidPage(
  selectInput("pop",
              label="Type of Plot",
              choices=c("Population", "Density"),
              selected="Total Population"),
  plotOutput("curv") #Giving an input name and listing out types to choose in the Shiny app
)
server <- function(input, output){
  output$curv <- renderPlot({
    ggplot() +
      geom_polygon(data = final.plot, 
                   aes(x = long, y = lat, group = group, fill = input$pop), 
                   color = "black", size = 0.25) + 
      coord_map()+
      scale_fill_distiller(name="Density", palette = "Spectral")+
      labs(title="Population in Australia")
  })
}
shinyApp(ui = ui, server = server)
But I'm getting an error saying "Discrete value supplied to continuous scale".
UPDATE 2: Here's the link for the dataset i'm using: Dataset

 
    
