折叠 jupyter notebook 中的单元格
collapse cell in jupyter notebook
我正在使用 ipython Jupyter 笔记本。假设我定义了一个在我的屏幕上占据大量 space 的函数。有没有办法折叠单元格?
我希望函数保持执行状态和可调用状态,但我想隐藏/折叠单元格以便更好地可视化笔记本。我该怎么做?
您可以创建一个单元格并将以下代码放入其中:
%%html
<style>
div.input {
display:none;
}
</style>
运行 该单元格将隐藏所有输入单元格。要显示它们,您可以使用菜单清除所有输出。
否则你可以试试下面这样的笔记本扩展:
https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/Home_3x
在 ~/.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');
}
});
保存后重启服务器,刷新notebook。您可以通过单击输入标签 (In[]) 折叠任何单元格。
更新:
较新的 jupyter-lab
是一个更现代且 feature-rich 的界面,默认支持单元格折叠。请参阅下面@intsco 的回答
更新 2
由于 jupyter-lab
现在也支持扩展,您可以使用 Collapsible_Headings
扩展来扩展 built-in cell-folding 功能。
原回答:
jupyter contrib nbextensions
Python 软件包包含一个可以在笔记本中启用的 code-folding 扩展。按照 link (Github) 获取文档。
使用命令行安装:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
为了更轻松地管理它们,我还推荐 jupyter nbextensions configurator
包。这在您的笔记本界面中提供了一个额外的选项卡,您可以从中轻松地(取消)激活所有已安装的扩展。
安装:
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
hide_code 扩展允许您隐藏单个单元格,and/or 它们旁边的提示。安装为
pip3 install hide_code
访问 https://github.com/kirbs-/hide_code/ 了解有关此扩展程序的更多信息。
首先,按照Energya的说明:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
第二个是关键:打开jupiter notebook后,点击Nbextension选项卡。现在用Nbextension提供的搜索工具"colla"搜索,然后你会找到一个叫做"Collapsible Headings"
的东西
这就是你想要的!
还有改进版的潘颜建议。它添加了显示代码单元格的按钮:
%%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>
或python:
# Run me to hide code cells
from IPython.core.display import display, HTML
display(HTML(r"""<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>"""))
我遇到了类似的问题,@Energya 指出的 "nbextensions" 工作得很好而且毫不费力。安装说明很简单(我在 Windows 上尝试使用 anaconda)for the notebook extensions and for their configurator.
也就是说,我想补充一点,您应该对以下扩展程序感兴趣。
JupyterLab 支持单元格折叠。单击左侧的蓝色单元格栏将折叠单元格。
除了启用扩展外,您不需要做太多事情:
http://localhost:8888/nbextensions?nbextension=collapsible_headings
http://localhost:8888/nbextensions?nbextension=codefolding/main
您很可能会在此处找到所有扩展程序:
http://localhost:8888/nbextensions
正如其他人提到的,您可以通过 nbextensions 执行此操作。我想简要说明我所做的事情,既快速又简单:
启用可折叠标题:
在您的终端中,enable/install Jupyter Notebook Extensions 首先输入:
pip install jupyter_contrib_nbextensions
然后,输入:
jupyter contrib nbextension install
Re-open Jupyter 笔记本。转到 "Edit" 选项卡,然后 select "nbextensions config"。
Un-check 标题正下方的框 "Configurable nbextensions",然后是 select "collapsible headings".
我用来获得期望结果的是:
- 将以下代码块保存在名为
toggle_cell.py
的文件中,该文件位于与您的笔记本相同的目录中
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))
- 在笔记本的第一个单元格中添加以下内容
from toggle_cell import toggle_code as hide_sloution
- 您需要添加切换按钮以简单调用的任何单元格
hide_sloution()
这个问题有很多答案,我觉得所有这些都不令人满意(有些比其他的更多),在许多扩展中 - 代码折叠,按标题折叠等等。None 做我想做的想要以简单有效的方式。我真的很惊讶没有实施解决方案(就像 Jupyter Lab 一样)。
事实上,我非常不满意我开发了一个非常简单的笔记本扩展,它可以 expand/collapse 笔记本单元格中的 代码 ,同时保持其可执行性。
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 兼容。我希望人们会觉得这很有用!
我遇到了同样的问题,我发现这个扩展很有用
pip install aquirdturtle_collapsible_headings
我正在使用 ipython Jupyter 笔记本。假设我定义了一个在我的屏幕上占据大量 space 的函数。有没有办法折叠单元格?
我希望函数保持执行状态和可调用状态,但我想隐藏/折叠单元格以便更好地可视化笔记本。我该怎么做?
您可以创建一个单元格并将以下代码放入其中:
%%html
<style>
div.input {
display:none;
}
</style>
运行 该单元格将隐藏所有输入单元格。要显示它们,您可以使用菜单清除所有输出。
否则你可以试试下面这样的笔记本扩展:
https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/Home_3x
在 ~/.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');
}
});
保存后重启服务器,刷新notebook。您可以通过单击输入标签 (In[]) 折叠任何单元格。
更新:
较新的 jupyter-lab
是一个更现代且 feature-rich 的界面,默认支持单元格折叠。请参阅下面@intsco 的回答
更新 2
由于 jupyter-lab
现在也支持扩展,您可以使用 Collapsible_Headings
扩展来扩展 built-in cell-folding 功能。
原回答:
jupyter contrib nbextensions
Python 软件包包含一个可以在笔记本中启用的 code-folding 扩展。按照 link (Github) 获取文档。
使用命令行安装:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
为了更轻松地管理它们,我还推荐 jupyter nbextensions configurator
包。这在您的笔记本界面中提供了一个额外的选项卡,您可以从中轻松地(取消)激活所有已安装的扩展。
安装:
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
hide_code 扩展允许您隐藏单个单元格,and/or 它们旁边的提示。安装为
pip3 install hide_code
访问 https://github.com/kirbs-/hide_code/ 了解有关此扩展程序的更多信息。
首先,按照Energya的说明:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
第二个是关键:打开jupiter notebook后,点击Nbextension选项卡。现在用Nbextension提供的搜索工具"colla"搜索,然后你会找到一个叫做"Collapsible Headings"
的东西这就是你想要的!
还有改进版的潘颜建议。它添加了显示代码单元格的按钮:
%%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>
或python:
# Run me to hide code cells
from IPython.core.display import display, HTML
display(HTML(r"""<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>"""))
我遇到了类似的问题,@Energya 指出的 "nbextensions" 工作得很好而且毫不费力。安装说明很简单(我在 Windows 上尝试使用 anaconda)for the notebook extensions and for their configurator.
也就是说,我想补充一点,您应该对以下扩展程序感兴趣。
JupyterLab 支持单元格折叠。单击左侧的蓝色单元格栏将折叠单元格。
除了启用扩展外,您不需要做太多事情:
http://localhost:8888/nbextensions?nbextension=collapsible_headings
http://localhost:8888/nbextensions?nbextension=codefolding/main
您很可能会在此处找到所有扩展程序:
http://localhost:8888/nbextensions
正如其他人提到的,您可以通过 nbextensions 执行此操作。我想简要说明我所做的事情,既快速又简单:
启用可折叠标题: 在您的终端中,enable/install Jupyter Notebook Extensions 首先输入:
pip install jupyter_contrib_nbextensions
然后,输入:
jupyter contrib nbextension install
Re-open Jupyter 笔记本。转到 "Edit" 选项卡,然后 select "nbextensions config"。 Un-check 标题正下方的框 "Configurable nbextensions",然后是 select "collapsible headings".
我用来获得期望结果的是:
- 将以下代码块保存在名为
toggle_cell.py
的文件中,该文件位于与您的笔记本相同的目录中
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))
- 在笔记本的第一个单元格中添加以下内容
from toggle_cell import toggle_code as hide_sloution
- 您需要添加切换按钮以简单调用的任何单元格
hide_sloution()
这个问题有很多答案,我觉得所有这些都不令人满意(有些比其他的更多),在许多扩展中 - 代码折叠,按标题折叠等等。None 做我想做的想要以简单有效的方式。我真的很惊讶没有实施解决方案(就像 Jupyter Lab 一样)。
事实上,我非常不满意我开发了一个非常简单的笔记本扩展,它可以 expand/collapse 笔记本单元格中的 代码 ,同时保持其可执行性。
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 兼容。我希望人们会觉得这很有用!
我遇到了同样的问题,我发现这个扩展很有用
pip install aquirdturtle_collapsible_headings