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

如何确保每次打开Jupyter notebook时多个Plotly图表渲染效果一致

解决方案

方案1:修改自动运行JS逻辑(适配内核已运行场景+保留代码折叠状态)

把你原来首单元格的%%html代码替换为以下内容,这段代码会在每次页面加载完成后,等待Jupyter内核连接就绪后自动执行所有单元格,执行完成后主动触发Codefolding扩展的初始化,恢复代码单元的折叠状态:

%%html
<script>
// 等待Jupyter页面完全加载
$(document).on('ready', function() {
    // 轮询等待内核连接完成,兼容已启动和新启动的内核
    const checkKernelReady = setInterval(() => {
        if (Jupyter.notebook.kernel && Jupyter.notebook.kernel.is_connected()) {
            clearInterval(checkKernelReady);
            // 执行所有单元格
            Jupyter.notebook.execute_all_cells();
            // 延迟等待单元格执行完成后恢复折叠状态
            setTimeout(() => {
                if (Jupyter.notebook.config.data.codefolding_enabled) {
                    Jupyter.notebook.get_cells().forEach(cell => {
                        if (cell.metadata.code_folding) {
                            cell.code_mirror.foldCode(cell.metadata.code_folding);
                        }
                    });
                }
            }, 500);
        }
    }, 100);
});
</script>

方案2:提前嵌入Plotly渲染依赖,避免内核已运行时前端依赖缺失

在所有绘图代码的最开头添加以下配置,强制Plotly把渲染所需的JS资源直接嵌入到每个图表的输出中,无需依赖内核动态加载:

import plotly.io as pio
# 经典Jupyter环境配置,将JS资源嵌入输出,支持离线渲染
pio.renderers.default = "notebook_connected"
# 若需要打开笔记本无需运行内核也能看交互式图表,可改用以下配置
# pio.renderers.default = "iframe"

方案3:解决配置冲突(可选)

如果你的Initialization cells配置和自动运行JS有冲突,可以暂时关闭Initialization cells属性,仅用上述修改后的JS代码实现自动运行,避免重复执行逻辑冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:57:03