Shiny应用中Plotly图表无法显示的问题求助
问题解决:Shiny+Flexdashboard切换Plotly图表不显示
问题原因
renderPlot()仅支持渲染静态绘图对象(比如ggplot2、R基础绘图的输出),而Plotly生成的是交互式图表对象,需要使用Plotly包提供的renderPlotly()函数来渲染,同时要保证输出逻辑匹配交互式图表的要求。
修改后的完整代码
--- title: "Test App" output: flexdashboard::flex_dashboard: orientation: columns vertical_layout: fill runtime: shiny --- ```{r setup, include=FALSE} library(flexdashboard) library(shiny) library(tidyverse) library(plotly) # Data data <- mtcars data$cyl <- as.factor(data$cyl)
Column {.sidebar}
selectInput("clusterNum", label = h4("Charts"), choices = list("Chart1" = "Chart1", "Chart2" = "Chart2"), selected = "Chart1" )
Column {data-width=650}
Chart
# 提前定义图表对象 Chart1 <- ggplot(data, aes(x = wt, y = mpg)) + geom_point() Chart2 <- plot_ly(data, x = ~wt, y = ~mpg, type = 'bar') # 用renderPlotly统一渲染两种图表 renderPlotly({ switch(input$clusterNum, "Chart1" = ggplotly(Chart1), # 将ggplot转为Plotly兼容对象 "Chart2" = Chart2 ) })
## 关键改动说明 - 把原有的`renderPlot()`替换为`renderPlotly()`,确保能识别并渲染Plotly交互式图表。 - 用`ggplotly()`将ggplot2生成的Chart1转换为Plotly兼容对象,这样可以通过同一个渲染函数处理两种图表,避免切换时出现输出容器不匹配的问题。 内容的提问来源于stack exchange,提问作者silent_hunter
相关产品推荐
相关产品推荐

