R Shiny App of Pokemon Data Set

January 27, 2020 By Pascal Schmidt Personal Project R

Recently, I looked through my university folder and found a project that I have created in my STAT 240 class. Then I thought about this picture here. Therefore, I decided to publish my first ever Shiny app where I analyzed a Pokemon data set.

If you want a better layout, then visit the visualizations on the Shiny server.

Code:

###############
### SERVER: ###
###############

library(shiny)
library(ggplot2)
library(dplyr)
library(stringr)
library(RColorBrewer)
library(wordcloud)



shinyServer(function(input, output) {
  output$plot <- renderPlot({
    van <- read.csv("van.csv")
    
    data <- subset(van,
                   gender %in% input$gender)
    
    
    data.1 <- subset(data,
                     weather %in% input$weather)
    
    
    p <- ggplot(data.1, aes(level, cp)) +
      geom_point(shape = input$size) +
      ggtitle(input$title)
    
    if (input$fit) {
      p <- p + geom_smooth(method = "lm", se = F)
    }
    
    
    if(input$AddCI){
      p <- p + geom_smooth(method = "lm", se = T)
    }
    print(p)
  })
  #########END OF TAB 1
  
  #########START OF TAB 2
 
  output$DatePlot <- renderPlot({
    
    all <- read.csv("all.csv")
    
    data.2 <- subset(all,
                   time %in% input$time)
    
    q <- ggplot(data.2, aes(x = time.of.Day)) +
      geom_histogram(binwidth = input$decimal) +
      ggtitle("Time of the Day Players are hunting for Pokemon") + xlab("Time of the Day") +
      scale_x_continuous(breaks = seq(0, 12, 1)) + geom_density()
    q
    
  })
  
  #########END OF TAB 2
  
  
  #########START OF TAB 3
  
  output$WordcloudPlot <- renderPlot({
    
    
    all.cities <- read.csv("all.cities.csv")
    
    data.3 <- subset(all.cities,
                     city %in% input$city)
    
    wordcloud(words = data.3$Words, freq = data.3$Freq, min.freq = input$freq, max.words=input$max, colors = rainbow(8), random.order = FALSE)
    
  })
  
  #########END OF TAB 3
  
})


###########
### UI: ###
###########

library(shiny)
library(shiny)
library(ggplot2)
library(dplyr)
library(stringr)
library(RColorBrewer)
library(wordcloud)

van <- read.csv("van.csv")
all <- read.csv("all.csv")
all.cities <- read.csv("all.cities.csv")

shinyUI(fluidPage(
  sidebarLayout(
    sidebarPanel(
      # Add a title text input
      textInput("title", "Title", "Level vs Cp"),
      
      
      # numeric input
      numericInput("size", "Shape", 16, 1, 25),
      
      
      # Add a checkbox for line of best fit
      checkboxInput("fit", strong("Add Least Squares Line"), FALSE),
      
      
      # Add radio buttons
      radioButtons("gender", "Gender",
                   choices = c("Male", "Female")),

      
      # dropdown selector
      selectInput("weather", "Weather",
                  choices = levels(van$weather),
                  multiple = FALSE,
                  selected = "None"),
    
      
      
      conditionalPanel(
        condition = "input.fit == true",   #Note th lowercase logical
        helpText(HTML("<h3>You might want to include the Confidence Bands for the Least Squares Line</h3>")),  #This is just big text
        checkboxInput("AddCI", strong("Add Confidence Bands for Least Squares Line"), FALSE)), 
      
       radioButtons("time", "Time of the Day for Histogram",
                    choices = levels(all$time)),
      
      sliderInput("decimal", "Changing Binwidth of Histogram",
                  min = 0, max = 0.05,
                  value = 0.025, step = 0.0005),
      
      
       # Add radio buttons for Wordcloud
       radioButtons("city", "Choose the City of your Wordcloud",
                    choices = levels(all.cities$city)),
      
      sliderInput("freq",
                  "Minimum Frequency:",
                  min = 40,  max = 11000, value = 500),
      sliderInput("max",
                  "Maximum Number of Words:",
                  min = 50,  max = 250,  value = 80)
      
      
    ),
    mainPanel(
      
      tabsetPanel(type = "tabs",
                  tabPanel("Pokemon Data", plotOutput("plot")),
                  tabPanel("Time Of the Day Insights", plotOutput("DatePlot")),
                  tabPanel("Twitter Wordclouds", plotOutput("WordcloudPlot")),
                  tabPanel("About",source("about.R")$value()))
      
    )
  )
))

 

Post your comment