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

使用Quarto+Julia+Plotly(基于Plots)生成图表失败求助

Julia端解决Quarto+Plots(Plotly后端)图表不显示问题

针对Quarto结合Julia Plots包的Plotly后端无法渲染图表(gr后端正常)的问题,可尝试以下Julia端解决方案:

方案1:手动导出Plotly图表为HTML片段并嵌入

在Julia代码块中生成图表后,将其保存为独立的HTML片段,再通过Quarto的include指令嵌入到文档中:

using Plots
plotly()
# 生成图表
p = plot(rand(10), rand(10), title="Plotly Test")
# 保存为临时HTML文件
savefig(p, "plotly_chart.html")

在index.qmd中添加嵌入指令:

{{< include plotly_chart.html >}}

注意:可在Quarto的post-render脚本中自动清理临时HTML文件,避免冗余文件残留。

方案2:改用PlotlyJS.jl直接生成交互式图表

放弃Plots包的Plotly后端,直接使用PlotlyJS.jl创建图表,Quarto对其原生输出支持更稳定:

using PlotlyJS
# 创建轨迹与布局
trace = scatter(x=rand(10), y=rand(10), mode="markers", marker=attr(size=10, color="blue"))
layout = Layout(title="Interactive Plot", xaxis_title="X", yaxis_title="Y")
# 生成并显示图表
p = plot(trace, layout)
display(p)

该方案直接输出Plotly标准的JSON结构,Quarto可直接解析渲染交互式图表。

方案3:提取Plotly JSON数据并手动JS渲染

通过Plots的plotly_json函数获取图表的JSON数据,再用Plotly的JavaScript API手动渲染:

using Plots, JSON3
plotly()
p = plot(rand(10), rand(10))
# 导出图表JSON数据
plot_json = JSON3.write(Plots.plotly_json(p))

在index.qmd中添加HTML容器与渲染脚本:

<div id="plot-container"></div>
<script>
  const plotData = JSON.parse('{{ plot_json }}');
  Plotly.newPlot('plot-container', plotData.data, plotData.layout);
</script>

需确保Quarto加载Plotly的JS库,可在_quarto.yml中配置:

format:
  html:
    include-in-header:
      - text: |
          <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>

若不想依赖CDN,可下载Plotly JS文件到本地并引用本地路径。

方案4:降级Plots包到兼容版本

若确认问题源于Plots包与Quarto的版本冲突,可在Project.toml中指定过往兼容的Plots版本:

[deps]
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"

[compat]
Plots = "~1.38.0" # 替换为之前能正常工作的版本号

执行pkg> instantiate重新安装指定版本的依赖包。

内容的提问来源于stack exchange,提问作者ITA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 13:52:34