Convert ggplot object to plotly in shiny application

21,244

Solution 1

Try:

library(shiny)
library(ggplot2)
library(ggthemes)
library(plotly)

ui <- fluidPage(  
titlePanel("Plotly"),
sidebarLayout(
sidebarPanel(),
mainPanel(
  plotlyOutput("plot2"))))
  
server <- function(input, output) {

output$plot2 <- renderPlotly({
  ggplotly(
    ggplot(data = mtcars, aes(x = disp, y = cyl)) + 
      geom_smooth(method = lm, formula = y~x) + 
      geom_point() + 
      theme_gdocs())
})
}

shinyApp(ui, server)

Solution 2

If it is rendering in the RStudio pane instead of the app, do make sure that you are using plotlyOutput in the UI section as well as renderPlotly in the server section.

Share:
21,244
athlonshi
Author by

athlonshi

Updated on April 23, 2021

Comments

  • athlonshi
    athlonshi about 3 years

    I am trying to convert a ggplot object to plotly and show it in a shiny application. But I encountered an error "no applicable method for 'plotly_build' applied to an object of class "NULL""

    I was able to return the ggplot object to the shiny application successfully,

    output$plot1 <- renderplot({
       gp <- ggplot(data = mtcars, aes(x = disp, y = cyl)) + geom_smooth(method = lm, formula = y~x) + geom_point() + theme_gdocs()
    })
    

    but somehow plotly cannot convert it.

    My code looks like this

    output$plot2 <- renderplotly({
       gp <- ggplot(data = mtcars, aes(x = disp, y = cyl)) + geom_smooth(method = lm, formula = y~x) + geom_point() + theme_gdocs()
       ggplotly()
    })