在闪亮的应用程序中将 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的主要内容,如果未能解决你的问题,请参考以下文章
在闪亮的应用程序中缓存基本 ggplot 并允许动态修改图层(leafletProxy 等效于 ggplot)