Shiny plotlyOutput() not responding to height and width sizes

心不动则不痛 提交于 2019-12-04 10:20:48

When you use ggplotly() you can change the size of plotlyOutput with layout options in the server part:

p2 <- ggplotly(p) %>% layout(height = 800, width = 800)

I found that plotlyOutput will only work with parameters width = "600px", height = "600px" if you provide input directly from plot_ly() instead ggplotly(), e.g.

p2 <- plot_ly(dat, x = ~x, y = ~y)

It seems that the plotlyOutput function does not hand over the height/width parameters. As mentioned before, you can force to plot to be of a certain size:

p <- plot_ly(x = x, y = y, height=800) 

However, if you have following elements on the site (e.g. another plot like in my case) the plot is partially hidden. I found a workaround by manipulating the plotlyOutput object on the server-side. Here is a simple example:

Server:

output$plotly <- renderUI({
  plot_output_list <- lapply(1:3, function(i) {
    plotname <- paste0("plotly", i)
    plot_output_object <- plotlyOutput(plotname)
    plot_output_object <- renderPlotly({
      p <- plot_ly(x = a, y = b)
      return(p) # only necessary when adding other plotly commands like add_trace 
    })
  })
  # for each element set the height (here went something wrong with plotlyOutput)
  for(i in 1:length(plot_output_list)){
    attr(plot_output_list[[i]],'outputArgs') <- list(height="850px")
  }
  # return
  return(plot_output_list)
})

UI:

uiOutput("plotly")

I anyway had to go the way via renderUI since I have a dynamic number of plots. Hope this helps you too

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!