在jupyter笔记本中崩溃细胞

时间:2015-10-15 22:21:54

标签: python ipython ipython-notebook jupyter

我正在使用ipython Jupyter笔记本。假设我定义了一个在屏幕上占用大量空间的函数。有没有办法折叠细胞?

我希望该函数保持执行和可调用,但我想隐藏/折叠单元格以便更好地可视化笔记本。我怎么能这样做?

12 个答案:

答案 0 :(得分:54)

jupyter contrib nbextensions Python包中包含可在笔记本中启用的代码折叠扩展。请点击链接(Github)获取文档。

使用命令行安装:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

为了让管理生活更轻松,我还推荐了jupyter nbextensions configurator套餐。这为您的Notebook界面提供了一个额外的选项卡,您可以从中轻松(de)激活所有已安装的扩展。

安装:

pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

答案 1 :(得分:21)

您可以创建一个单元格并将以下代码放入其中:

%%html
<style>
div.input {
    display:none;
}
</style>

运行此单元格将隐藏所有输入单元格。要显示它们,您可以使用菜单清除所有输出。

否则您可以尝试下面的笔记本扩展程序:

https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/Home_3x

答案 2 :(得分:13)

JupyterLab支持单元折叠。单击左侧的蓝色单元格栏将折叠该单元格。 enter image description here

答案 3 :(得分:11)

我遇到了类似的问题,@ Energya指出的“nbextensions”工作得非常好,毫不费力。安装说明很简单(我在Windows上尝试使用anaconda)for the notebook extensionsfor their configurator

那就是说,我想补充一点,以下扩展应该是有意义的。

  • 隐藏输入| 此扩展允许在笔记本中隐藏单个代码单元。这可以通过单击工具栏按钮来实现: Hide Input

  • 可折叠标题|允许笔记本具有可折叠部分,由标题分隔 Collapsible Headings

  • Codefolding |这已被提及,但我添加它是为了完整性 Codefolding

答案 4 :(得分:9)

在〜/ .jupyter / custom /中创建custom.js文件,内容如下:

$("<style type='text/css'> .cell.code_cell.collapse { max-height:30px; overflow:hidden;} </style>").appendTo("head");
$('.prompt.input_prompt').on('click', function(event) {
    console.log("CLICKED", arguments)   
    var c = $(event.target.closest('.cell.code_cell'))
    if(c.hasClass('collapse')) {
        c.removeClass('collapse');
    } else {
        c.addClass('collapse');
    }
});

保存后,重启服务器并刷新笔记本。您可以通过单击输入标签(In [])来折叠任何单元格。

答案 5 :(得分:8)

hide_code扩展允许您隐藏单个单元格和/或它们旁边的提示。安装为

pip3 install hide_code

有关此扩展程序的详情,请访问https://github.com/kirbs-/hide_code/

答案 6 :(得分:7)

首先,按照Energya的指示:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

其次是关键:打开jupiter笔记本后,单击Nbextension选项卡。现在从Nbextension(而不是通过网络浏览器)提供的搜索工具中搜索“colla”,然后你会发现一个名为“可折叠标题”的内容

这就是你想要的!

答案 7 :(得分:5)

这个问题有很多答案,我感到所有这些答案都不令人满意(有些不胜枚举),其中包括代码扩展,标题折叠等扩展。没有一种以简单有效的方式实现我想要的功能。我真的感到惊讶的是,尚未实施解决方案(对于Jupyter Lab而言)。

事实上,我非常不满意,以至于我开发了一个非常简单的笔记本扩展,可以扩展/折叠笔记本单元中的代码,同时保持其可执行性。

GitHub存储库:https://github.com/BenedictWilkinsAI/cellfolding

下面是该扩展程序的小演示:

只需在代码单元格的左侧双击将其折叠为一行:

再次双击将展开单元格。

扩展程序可以通过pip轻松安装:

pip install nbextension-cellfolding
jupyter nbextension install --py cellfolding --user
jupyter nbextension enable --py cellfolding --user 

,并且还与nbextension configurator兼容。我希望人们会发现这很有用!

答案 8 :(得分:3)

正如其他人所提到的,您可以通过nbextensions进行此操作。我想简短地解释一下我所做的事情,这很容易:

要启用可协作的标题: 在您的终端中,通过首先输入以下内容来启用/安装Jupyter Notebook Extensions:

pip install jupyter_contrib_nbextensions

然后输入:

jupyter contrib nbextension install

重新打开Jupyter Notebook。转到“编辑”选项卡,然后选择“ nbextensions配置”。 取消直接选中“可配置的扩展名”标题下的复选框,然后选择“可折叠的标题”。

答案 9 :(得分:1)

还有潘燕建议的改进版本。它添加了显示代码单元格的按钮:

MathUtils.lerp(currentZoom,targetZoom,progress);

或者python:

%%html
<style id=hide>div.input{display:none;}</style>
<button type="button" 
onclick="var myStyle = document.getElementById('hide').sheet;myStyle.insertRule('div.input{display:inherit !important;}', 0);">
Show inputs</button>

答案 10 :(得分:1)

我用来获得预期结果的是:

  1. 将以下代码块保存在与笔记本相同的目录下的名为import re pattern = re.compile(r'(\b\w(\D*)-\d(\W*)\b)') test = 'x-0' tokens = pattern.findall(test) 的文件中
toggle_cell.py
  1. 在笔记本的第一个单元格中添加以下内容
from IPython.core.display import display, HTML
toggle_code_str = '''
<form action="javascript:code_toggle()"><input type="submit" id="toggleButton" value="Show Sloution"></form>
'''

toggle_code_prepare_str = '''
    <script>
    function code_toggle() {
        if ($('div.cell.code_cell.rendered.selected div.input').css('display')!='none'){
            $('div.cell.code_cell.rendered.selected div.input').hide();
        } else {
            $('div.cell.code_cell.rendered.selected div.input').show();
        }
    }
    </script>

'''

display(HTML(toggle_code_prepare_str + toggle_code_str))

def hide_sloution():
    display(HTML(toggle_code_str))
  1. 您需要添加切换按钮以简单地调用from toggle_cell import toggle_code as hide_sloution
  2. 的任何单元格

答案 11 :(得分:0)

除了启用扩展程序外,您无需做其他事情:

http://localhost:8888/nbextensions?nbextension=collapsible_headings
http://localhost:8888/nbextensions?nbextension=codefolding/main

enter image description here

最有可能在这里找到所有扩展名:

http://localhost:8888/nbextensions

enter image description here