我可能正在做一些非常愚蠢的事情,但我一直在使用
在我的jupyter笔记本中使用剧情离线import plotly.offline as py
py.init_notebook_mode(connected=True)
from plotly.graph_objs import *
我试图显示可以使用滑块导航的一系列图像。具有图像数据的整个numpy阵列是50个图像x 64宽x 64高。
我把它放到我在网上找到的代码拼凑在一起的下面的滑块功能中。返回的Figure对象本身并不是很大。然而,当调用plot iplot
时,我的jupyter笔记本在磁盘上的大小(由ls -l
测量)非常大 - 就像15 MB一样,即使numpy源数据像1MB。对于更大/更多的数字,这变得难以管理。有谁知道发生了什么?
def slider_ims(imgs):
imgs = np.flip(imgs,1)
data = [dict(
type='heatmap',
z = imgs[step,:,:],
visible = False,
showscale=False,
xaxis="x",
yaxis="y",
name = 'z = '+str(step)) for step in np.arange(imgs.shape[0])]
data[0]['visible'] = True
steps = []
for i in range(len(data)):
step = dict(
method = 'restyle',
args = ['visible', [False] * len(data)],
label = str(i)
)
step['args'][1][i] = True # Toggle i'th trace to "visible"
steps.append(step)
sliders = [dict(
active = 0,
currentvalue = {"prefix": "Frame: "},
pad = {"t": 50},
steps = steps,
ticklen = 0,
minorticklen = 0
)]
layout = Layout(
sliders = sliders,
font=Font(family='Balto'),
width=800,
height=600,
)
fig=Figure(data=data, layout=layout)
py.iplot(fig)
return fig
答案 0 :(得分:1)
如果您只关心笔记本的磁盘大小,则可以更改 Jupyter 配置以禁用将输出单元写入 ipynb 文件。这意味着只有您的代码保存在磁盘上。每当您打开笔记本时,输出单元格将为空,您需要重新运行笔记本以获取它们。您必须决定这是否适合您使用笔记本的方式。
您可以通过编辑 jupyter_notebook_config.py
配置文件进行设置,该文件通常位于 ~/.jupyter
下的主目录中(Windows:C:\Users\USERNAME\.jupyter\
)。如果该文件尚不存在,则可以使用 jupyter notebook --generate-config
(更多信息 here)从终端生成此文件。
在这个配置文件中,您需要添加一个预保存钩子,在保存之前剥离输出单元格,如documentation中所述:
def scrub_output_pre_save(model, **kwargs):
"""scrub output before saving notebooks"""
# only run on notebooks
if model['type'] != 'notebook':
return
# only run on nbformat v4
if model['content']['nbformat'] != 4:
return
for cell in model['content']['cells']:
if cell['cell_type'] != 'code':
continue
cell['outputs'] = []
cell['execution_count'] = None
c.FileContentsManager.pre_save_hook = scrub_output_pre_save
额外好处:像这样剥离输出单元也是获得源代码控制可读差异的好方法,例如git
。
答案 1 :(得分:0)
通常情节剧情的情节很大。您的笔记本电脑尺寸增加了,因为您使用内联图(py.iplot)将图表保存在笔记本上。
如果您不希望笔记本电脑如此之大,只需使用普通图(py.plot)并将图保存在另一个文件中。
你可以阅读剧情的文档