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()
})
First of all, create a data frame. Then, create a ggplot2 graph and save it in an object. After that, load plotly package and create the ggplot2 graph using ggplotly function.
Aesthetically, many users consider ggplot2 to be better looking than Plotly, due to its margins and points. In terms of speed, ggplot2 tends to run much slower than Plotly. With regard to integration, both Plotly and ggplot2 can integrate with a variety of tools, like Python, MATLAB, Jupyter, and React.
With ggplotly() by Plotly, you can convert your ggplot2 figures into interactive ones powered by plotly. js, ready for embedding into Dash applications. ggplotly is free and open source and you can view the source, report issues or contribute on GitHub. Head over to the community forum to ask questions and get help.
Plotly is an R package for creating interactive web-based graphs via plotly's JavaScript graphing library, plotly.
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)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With