You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:50:25