作者:戴安娜DianaKok | 来源:互联网 | 2023-09-07 17:41
我最近发现我可以在我的 jupyterlab 笔记本中默认使用 SVG 制作我所有的 matplotlib 图形
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_formats = ['svg']
但是,如果我刷新页面,数字就会消失,留下
如果不更改内联后端,则不会发生这种效果。刷新后,我的情节数字也仍然出现。我宁愿不必重新运行单元格。查看实际的 ipynb 文件,SVG 就在实际文件中。如何在不重新运行单元格的情况下显示此数字?
回答
该行为看起来符合Jupyter的安全模型。
- 不受信任的 HTML 总是被清理
- 不受信任的 Javascript 永远不会执行
- Markdown 单元格中的 HTML 和 Javascript 永远不会被信任
- 用户生成的输出是可信的
- 任何其他 HTML 或 Javascript(在 Markdown 单元格中,由其他人生成的输出)永远不会被信任
- 信任的核心问题是“当前用户是否这样做了?”
因为 SVG 可以有
标签,所以存在攻击面。因此,您有两个选项来显示 SVG:
- 重新运行生成 SVG 的单元格(上面的最后一点)。
- 明确信任笔记本,
jupyter trust /path/to/notebook.ipynb
.
笔记:
- Plotly
image/png
在单元格的输出中保存版本。它在笔记本加载时显示。但是加载的(不是重新运行的)单元也具有交互性。不确定该豁免如何运作。
- 作为旁注,当前 JupyterLab 的行为因 SVG 显示的不同形式而异(请参阅issue#10464),但这不是这里的问题。