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

如何在Quarto Markdown中使用动态变量引用HTML图表文件

如何在Quarto Markdown中使用动态变量引用HTML图表文件

我懂你遇到的困扰了——在Quarto笔记本里,想用存储在变量里的动态文件名引用HTML图表,静态的iframe写法没问题,但换成变量就失效了对吧?我来给你分享几个可行的解决方案,顺便说说为啥你之前尝试的方法没起作用~

先说说你之前的问题出在哪

  • 直接在{=html}块里写iframe_str是没用的:Quarto的HTML块是纯静态内容,不会自动解析Python变量,它只会把iframe_str当成普通文本输出。
  • PyScript的方法不适用:PyScript是在浏览器端运行的前端代码,而你的corr_net_graph是Quarto编译时在Python环境里定义的后端变量,两者不在同一个上下文里,前端拿不到后端的变量值,所以才会出现你截图里把<py-script>标签当成src一部分的情况。

解决方案1:用Python代码块直接输出HTML

Quarto会自动渲染Python代码块的输出内容,如果输出是HTML格式,它会直接显示对应的元素。你可以这样写:

# 假设你的变量已经定义好了
corr_net_graph = "plot_userid.html"

# 生成iframe的HTML字符串
iframe_html = f'<iframe width="900" height="1200" src="{corr_net_graph}"></iframe>'

# 直接输出HTML,Quarto会渲染它
from IPython.display import HTML
display(HTML(iframe_html))

如果你不想显示这段代码,可以给代码块加个选项隐藏代码:

#| echo: false
corr_net_graph = "plot_userid.html"
iframe_html = f'<iframe width="900" height="1200" src="{corr_net_graph}"></iframe>'
from IPython.display import HTML
display(HTML(iframe_html))

更简单的方式是直接print,Quarto同样会解析输出的HTML:

#| echo: false
corr_net_graph = "plot_userid.html"
print(f'<iframe width="900" height="1200" src="{corr_net_graph}"></iframe>')

解决方案2:用Quarto的内联Python表达式

Quarto支持在Markdown中用{{ 变量名 }}的方式直接插入Python变量的值,前提是这个变量已经在之前的代码块里定义过了。你可以直接在HTML块里这样写:

```{=html}
<iframe width="900" height="1200" src="{{ corr_net_graph }}"></iframe>
比如你先在前面的Python块里定义变量:
```python
corr_net_graph = "plot_userid.html"

然后上面的HTML块就会自动把{{ corr_net_graph }}替换成对应的文件名,完美实现动态引用~

这两种方法都能解决你的问题,选哪个看你习惯啦!

备注:内容来源于stack exchange,提问作者ViSa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 14:48:09