jupyter notebooks 中的持久绘图

lit*_*ish 7 plotly jupyter-notebook plotly-python

我有情节情节的 jupyter 笔记本不会保留会话之间的情节。

这是在基于官方 jupyter/datascience-notebook docker 镜像的 Singularity 容器上运行的,上面安装了 plotly pip。

我正在使用带有notebook渲染器的新渲染器框架。我的笔记本值得信赖。我的情节在会议期间没有问题地出现。即使我重新启动内核,它们也会在同一笔记本的刷新和重新加载中持续存在。当我重新启动 jupyter 服务器或有时当我重新启动客户端机器并返回一个新的浏览器会话时,它们就会消失。输出单元格保持正确的尺寸,但它们是空白的。我可以看到笔记本中嵌入了一大堆js,但它没有在浏览器中呈现。此时,即使我 nbconvert 为 html,它们仍然不显示。尝试使用 Chromium 和 Firefox。

import plotly.graph_objects as go
import plotly.io as pio
import plotly.express as px
pio.renderers.default='notebook'
Run Code Online (Sandbox Code Playgroud)

然后我绘制了一堆东西,比如:

go.Figure(go.Scattergl(x = var1, y= var2, mode='markers', marker_size=1))

go.Figure(go.Histogram2dContour(x = var1, y= var2))

我的理解是,我准备在离线(非运行)笔记本中保留这些数字;为绘图生成的 js 和整个 plotly.js 库似乎嵌入在每个笔记本中,增加了 10 兆字节,但它们没有被渲染。由于这个问题,我最终不得不重新运行(有时很昂贵)笔记本,而我只需要查看以前的情节。

作为最近的 matplotlib/seaborn 转换者,我非常喜欢它的交互性,但在这一点上它很快就成为了一个亮点。我觉得我错过了一些东西。任何建议表示赞赏。

小智 1

对我来说,以下解决方案有效:

  • 在您正在使用的环境中:安装 orca : conda install -c plotly plotly-orca
  • 在笔记本的开头:将默认渲染器覆盖为“笔记本”:
import plotly.io as pio
pio.renderers.default='notebook'
Run Code Online (Sandbox Code Playgroud)

通过这些修改,绘图在会话之间(即:内核重新启动后)是持久的。