downloading static iheatmapr works locally but not on shinyapps.io server
Tomer-Tsaban opened this issue · 2 comments
Hi Alicia, and first much gratitude for your help and high responsiveness.
I noticed (what I think is) a bug, when downloading a static instance of iheatmapr - works for a local shiny app, but not on when uploaded to shinyapps.io server.
here's an example reproducible code for a simple app using measles data. also, here's a link to the same exact app on my shinyappsio user, where you could observe the download issue:
url:
https://tomertsaban.shinyapps.io/test_deploy_iheatmapr/
code:
`library(shiny)
library(iheatmapr)
data(measles, package = "iheatmapr")
ui<-fluidPage(
iheatmaprOutput("test"),
downloadButton("download_test","download_heatmap")
)
server<-function(session,input,output){
heatmap_reactive<-reactive({
test_heatmap<-main_heatmap(measles, name = "Measles<br>Cases", x_categorical = FALSE,
layout = list(font = list(size = 8))) %>%
add_col_groups(ifelse(1930:2001 < 1961,"No","Yes"),
side = "bottom", name = "Vaccine<br>Introduced?",
title = "Vaccine?",
colors = c("lightgray","blue")) %>%
add_col_labels(ticktext = seq(1930,2000,10),font = list(size = 8)) %>%
add_row_labels(size = 0.3,font = list(size = 6)) %>%
add_col_summary(layout = list(title = "Average<br>across<br>states"),
yname = "summary") %>%
add_col_title("Measles Cases from 1930 to 2001", side= "top") %>%
add_row_summary(groups = TRUE,
type = "bar",
layout = list(title = "Average<br>per<br>year",
font = list(size = 8)))
})
output$test<-renderIheatmap(
heatmap_reactive()
)
output$download_test<-downloadHandler(
filename ="test_heatmap.png",
content = function(file){
#cormap<-correlation_heatmap()
#cormap <-cormap %>% add_col_title(input$plot_title,side="top")
save_iheatmap(heatmap_reactive(),file,vwidth=2000,vheight=1000)
},
contentType = "image/png"
)
}
shinyApp(ui,server)`
I assumed you would like to know about this.
Thanks again!
Very delayed, but I figured out the issue: The 'webshot' library is needed but the app doesn't know that (it is just a 'Suggests' of iheatmapr and not an imports b/c only needed if you want to save). Webshot also needs to install phantomjs. If you add a call to
library(webshot)
webshot::install_phantomjs()
in your app it will fix the issue... see https://aschep.shinyapps.io/test_app/
Am adding a note to the documentation of save_iheatmap
about this use case.