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

Quarto演示中能否嵌入Shiny/Observable JS交互式幻灯片?附示例需求

在Quarto演示文稿中嵌入Shiny与Observable JS交互式图表

核心结论

  • 可以直接在Quarto演示中嵌入Shiny应用和Observable JS交互式图表,无需后台服务器托管——Quarto会将相关依赖打包进静态HTML文件,本地打开即可交互。

嵌入Shiny交互式图表(本地可运行)

Quarto支持创建Shiny驱动的演示文稿,生成的HTML包含Shiny运行所需的全部资源,无需部署到服务器。

以下是可直接复用的示例代码(写入Quarto .qmd文件):

---
title: "Quarto + Shiny 交互式演示"
format: revealjs
server: shiny
---

## Shiny 交互式直方图

```{r}
#| context: server

inputPanel(
  sliderInput("bins", "直方图分组数量:", min = 1, max = 50, value = 30)
)

renderPlot({
  x    <- faithful$waiting
  bins <- seq(min(x), max(x), length.out = input$bins + 1)
  
  hist(x, breaks = bins, col = "#75AADB", border = "white",
       xlab = "等待时间", main = "Old Faithful 喷发等待时间直方图")
})
关键说明:
- YAML头部必须添加`server: shiny`,声明这是Shiny驱动的文档。
- 代码块的`#| context: server`标记指定代码运行在Shiny服务器上下文。
- 导出的HTML文件可直接本地打开,无需额外服务器支持。

---

### 嵌入Observable JS交互式图表(本地可运行)
Quarto原生支持Observable JS单元格,可直接编写或引用交互式代码,打包后为静态HTML,本地即可交互。

以下是可直接复用的示例代码(写入Quarto `.qmd`文件):
```markdown
---
title: "Quarto + Observable JS 交互式演示"
format: revealjs
---

## Observable JS 交互式散点图

```{ojs}
// 导入Observable绘图库与交互组件
import {Inputs, Plot} from "@observablehq/plot"

// 交互式控件:调节点大小
const pointSize = Inputs.range([5, 50], {value: 20, label: "点大小"})

// 生成随机示例数据
const data = Array.from({length: 100}, () => ({
  x: Math.random() * 100,
  y: Math.random() * 100,
  category: Math.random() > 0.5 ? "A" : "B"
}))

// 绘制交互式散点图
Plot.plot({
  marks: [
    Plot.dot(data, {x: "x", y: "y", fill: "category", r: pointSize})
  ],
  width: 600,
  height: 400
})
关键说明:
- 使用`{ojs}`代码块标记Observable JS代码。
- 可直接导入Observable官方库,Quarto会自动处理依赖下载与打包。
- 导出的HTML文件本地打开即可实现交互式操作,无需外部服务器。

内容的提问来源于stack exchange,提问作者Eizy
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:40:19