Reputation: 624
My app runs fine locally. I can interact with it, etc. But when deployed globally it immediately throws the "Disconnected from Server" error. I've been googling for days and have tried everything I know how to try.
First things first:
My "Deploy" log in RStudio indicates successful deployment:
Preparing to deploy application...DONE
Uploading bundle for application: 193997...DONE
Deploying bundle: 994423 for application: 193997 ...
Waiting for task: 489405538
building: Building image: 992534
building: Fetching packages
building: Installing packages
building: Installing files
building: Pushing image: 992534
deploying: Starting instances
rollforward: Activating new instances
terminating: Stopping old instances
Application successfully deployed to https://jesstme.shinyapps.io/shinynames/
Deployment completed: https://jesstme.shinyapps.io/shinynames/
Link to the app itself: https://jesstme.shinyapps.io/shinynames/
Server code:
#set wd & environment----
setwd("/Users/OldJess/Dropbox/R Stuff (Home)/ShinyNames")
#load packages------
library(datasets)
library(ggplot2)
library(viridis)
library(ggthemes)
library(gridExtra)
library(dplyr)
library(rdrop2)
library(shiny)
library(devtools)
#base <- read.csv("data/NationalNamesBrief.csv", stringsAsFactors = FALSE, row.names = NULL, na.strings = c("NA","","#MULTIVALUE"))
#temporary df for demonstration purposes
base <- structure(list(Name = c("Ellie", "Ellie", "Ellie", "Ellie", "Ellie",
"Ellie"),
Year = c(1880L, 1881L, 1882L, 1883L, 1883L, 1884L),
Gender = c("F", "F", "F", "F", "M", "F"),
Count = c(17L, 27L, 37L, 24L, 7L, 28L)),
.Names = c("Name", "Year", "Gender", "Count"),
row.names = c(NA, 6L), class = "data.frame")
#clean data----
base$name <- tolower(base$Name)
base$MF <- as.factor(base$Gender)
#add ranking data by Year
base <- base %>%
group_by(Year) %>%
arrange(Year, desc(Count)) %>%
mutate(Rank = row_number())
#add ranking data by Year AND Gender
base <- base %>%
group_by(Year, Gender) %>%
arrange(Year, desc(Count)) %>%
mutate(GenderRank = row_number())
#create functions----
#function to create line & heat charts
lineHeatCharts <- function(pickaname){
pickanameLower <- tolower(pickaname)
subDf <- subset(base[base$name == pickanameLower,])
heat <- ggplot(subDf, aes(x = Year, y = MF, fill = Count)) +
scale_fill_viridis(name = "",
option = "B",
limits = c(0, max(subDf$Count))) +
geom_tile(color = "white", size = 0) +
theme_tufte() +
theme(axis.text.x = element_text(angle = 90, vjust = 1, hjust = 1),
axis.ticks.x = element_blank()) +
scale_x_continuous(breaks = seq(min(subDf$Year),
max(subDf$Year), by = 5)) +
labs(x = "Year", y = "")
line <- ggplot(subDf, aes(x = Year, y = Count, fill = MF)) +
geom_line(aes(colour = factor(subDf$Gender)), size = 1.5) +
theme_tufte() +
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank()) +
scale_x_continuous(breaks = seq(min(subDf$Year),
max(subDf$Year), by = 5)) +
labs(x = "", y = "", color = "")
return(grid.arrange(line, heat,
ncol = 1, nrow = 2,
heights = c(5, 2), top = max(subDf$Name)))
}
# Define server logic
function(input, output) {
output$view <- renderPlot({
lineHeatCharts(input$list)
})
}
UI code:
library(shiny)
library(shinythemes)
# Define UI for dataset viewer application
fluidPage(theme = shinytheme("flatly"),
# Application title
titlePanel("First Names on U.S. Social Security Applications, 1880 - 2014"),
sidebarLayout(
sidebarPanel(
textInput(inputId = "list", label = "Enter a name:", value = "Ellie"),
helpText("Note: This page will take about 30 seconds to load the first time you open it. Data are from US Social Security applications via data.gov. For privacy, only names with at least 5 babies per year are included. Errors in Social Security form submission, like incorrect sex, are not corrected. Names with special characters and spaces are not included."),
submitButton("Refresh View")
),
mainPanel(
h4(""),
plotOutput("view")
)
)
)
Upvotes: 1
Views: 3308
Reputation: 624
As it turns out there were two problems:
1) I needed to remove the setwd()
2nd line of my code
2) Shiny logs weren't working.
I posted on Google's Shiny forum, and a RStudio person fixed the issue with the logs. Once the logs were working I saw that the error pointed to my attempts to setwd. Deleted that and the problem was fixed. Keeping this question up because I'm sure this issue will plague someone else at some point.
Upvotes: 1
Reputation: 29387
Try this:
#set wd & environment----
#setwd("/Users/OldJess/Dropbox/R Stuff (Home)/ShinyNames")
#load packages------
library(datasets)
library(ggplot2)
library(viridis)
library(ggthemes)
library(gridExtra)
library(dplyr)
library(shiny)
library(shinythemes)
#base <- read.csv("data/NationalNamesBrief.csv", stringsAsFactors = FALSE, row.names = NULL, na.strings = c("NA","","#MULTIVALUE"))
#temporary df for demonstration purposes
base <- structure(list(Name = c("Ellie", "Ellie", "Ellie", "Ellie", "Ellie", "Ellie"),
Year = c(1880L, 1881L, 1882L, 1883L, 1883L, 1884L),
Gender = c("F", "F", "F", "F", "M", "F"),
Count = c(17L, 27L, 37L, 24L, 7L, 28L)),
.Names = c("Name", "Year", "Gender", "Count"),
row.names = c(NA, 6L), class = "data.frame")
#clean data----
base$name <- tolower(base$Name)
base$MF <- as.factor(base$Gender)
#add ranking data by Year
base <- base %>%
group_by(Year) %>%
arrange(Year, desc(Count)) %>%
mutate(Rank = row_number())
#add ranking data by Year AND Gender
base <- base %>%
group_by(Year, Gender) %>%
arrange(Year, desc(Count)) %>%
mutate(GenderRank = row_number())
#create functions----
#function to create line & heat charts
lineHeatCharts <- function(pickaname){
pickanameLower <- tolower(pickaname)
if(!any(base$name %in% pickanameLower)){
return()
}
subDf <- subset(base[base$name == pickanameLower,])
heat <- ggplot(subDf, aes(x = Year, y = MF, fill = Count)) +
scale_fill_viridis(name = "",
option = "B",
limits = c(0, max(subDf$Count))) +
geom_tile(color = "white", size = 0) +
theme_tufte() +
theme(axis.text.x = element_text(angle = 90, vjust = 1, hjust = 1),
axis.ticks.x = element_blank()) +
scale_x_continuous(breaks = seq(min(subDf$Year), max(subDf$Year), by = 5)) +
labs(x = "Year", y = "")
line <- ggplot(subDf, aes(x = Year, y = Count, fill = MF)) +
geom_line(aes(colour = factor(subDf$Gender)), size = 1.5) +
theme_tufte() +
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank()) +
scale_x_continuous(breaks = seq(min(subDf$Year),
max(subDf$Year), by = 5)) +
labs(x = "", y = "", color = "")
return(grid.arrange(line, heat, ncol = 1, nrow = 2, heights = c(5, 2), top = max(subDf$Name)))
}
ui <- fluidPage(theme = shinytheme("flatly"),
# Application title
titlePanel("First Names on U.S. Social Security Applications, 1880 - 2014"),
sidebarLayout(
sidebarPanel(
textInput(inputId = "list", label = "Enter a name:", value = "Ellie"),
helpText("Note: This page will take about 30 seconds to load the first time you open it. Data are from US Social Security applications via data.gov. For privacy, only names with at least 5 babies per year are included. Errors in Social Security form submission, like incorrect sex, are not corrected. Names with special characters and spaces are not included."),
submitButton("Refresh View")
),
mainPanel(
h4(""),
plotOutput("view")
)
)
)
server <- function(input, output, session) {
output$view <- renderPlot({
lineHeatCharts(input$list)
})
}
shinyApp(ui, server)
Upvotes: 1