在闪亮的应用程序中将 ggplot 对象转换为 plotly

Posted

技术标签:

【中文标题】在闪亮的应用程序中将 ggplot 对象转换为 plotly【英文标题】:Convert ggplot object to plotly in shiny application 【发布时间】:2016-10-06 10:34:23 【问题描述】:

我正在尝试将 ggplot 对象转换为 plotly 并在闪亮的应用程序中显示它。但是我遇到了一个错误“没有适用于 'plotly_build' 的方法应用于类“NULL”的对象”

我能够成功地将 ggplot 对象返回到闪亮的应用程序,

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

但不知何故无法转换它。

我的代码是这样的

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

【问题讨论】:

改用 renderPlotly 【参考方案1】:

试试:

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)

【讨论】:

很抱歉。再试一次。 它现在正在工作。实际上 ggplotly 或 print(ggplotly()) 都可以正常工作。我注意到我需要重新启动闪亮的服务器才能使更改(从 ggplot 到 plotly)生效。我不知道这是否正常,但在 Rstudio 与 Web 服务器上运行闪亮时确实会导致一些不一致的观察结果。 我也必须重新启动服务器,是的。但是,我的绘图输出不会发送到浏览器中的应用程序,而是呈现在 Rstudio 的查看器选项卡中......有什么想法吗? 这里有同样的问题。它会转到 Rstudio 的情节而不是浏览器。没用的 这里也一样,遵循@TrivialSpace 的提示【参考方案2】:

如果它在 RStudio 窗格而不是应用程序中呈现,请确保您在 UI 部分使用 plotlyOutput 以及在服务器部分使用 renderPlotly

【讨论】:

没有区别 谢谢!正是我所缺少的。这在上面的示例中,但略过。

以上是关于在闪亮的应用程序中将 ggplot 对象转换为 plotly的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2无法识别闪亮的反应数据

ggplot 和dashboardPage 的闪亮不起作用

在闪亮的应用程序中缓存基本 ggplot 并允许动态修改图层(leafletProxy 等效于 ggplot)

闪亮的应用程序中的ggplotly不断崩溃(Rstudio)

将鼠标悬停在闪亮的 ggplot 上时的工具提示

如何在带有 ggplotly() 的闪亮应用程序中使用 plotlyProxy() 以使绘图渲染得更快