我正在使用ipython Jupyter笔记本。假设我定义了一个在屏幕上占用很多空间的函数。有没有办法让牢房塌陷?
我希望函数保持执行和可调用状态,但是我想隐藏/折叠单元格以便更好地可视化笔记本。我怎样才能做到这一点?
我正在使用ipython Jupyter笔记本。假设我定义了一个在屏幕上占用很多空间的函数。有没有办法让牢房塌陷?
我希望函数保持执行和可调用状态,但是我想隐藏/折叠单元格以便更好地可视化笔记本。我怎样才能做到这一点?
Answers:
的jupyter contrib nbextensions
Python包包含一个代码折叠扩展,可以在笔记本内启用。请点击链接(Github)获得文档。
要使用命令行安装:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
为了使生活变得更轻松,我还建议您jupyter nbextensions configurator
打包。这在笔记本电脑界面中提供了一个额外的选项卡,您可以在其中轻松地(停用)所有已安装的扩展程序。
安装:
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
pip install jupyter_contrib_nbextensions
然后jupyter contrib nbextensions install --sys-prefix --skip-running-check
。我希望jupyter在默认情况下有此软件包。
conda install -c conda-forge jupyter_contrib_nbextensions
。
Due to major differences between the Jupyter Notebook and JupyterLab, the extensions in this repository will not work in JupyterLab
。
您可以创建一个单元格并将以下代码放入其中:
%%html
<style>
div.input {
display:none;
}
</style>
运行此单元格将隐藏所有输入单元格。要显示它们,可以使用菜单清除所有输出。
否则,您可以尝试以下笔记本扩展:
https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/Home_3x
JupyterLab支持细胞折叠。单击左侧的蓝色单元格栏将折叠该单元格。
source_hidden
并outputs_hidden
设置。nbformat.readthedocs.io/en/latest/...
在〜/ .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 [])折叠任何单元格。
var c = $(event.target).closest('.cell.code_cell')
并遵循Steohan的建议将所有内容包装在setTimeout中之后,这对我 有用。
hide_code扩展名允许您隐藏单个单元格和/或它们旁边的提示。安装为
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
第二个关键是:打开木星笔记本后,单击Nbextension选项卡。现在,从Nbextension提供的搜索工具(不是Web浏览器)中搜索“ colla”,然后您将找到一个名为“ Collapsible Headings”的内容
这就是你想要的!
正如其他人所提到的,您可以通过nbextensions进行此操作。我想简短地解释一下我所做的事情:
要启用可协作的标题:在终端中,首先输入以下内容来启用/安装Jupyter Notebook Extensions:
pip install jupyter_contrib_nbextensions
然后输入:
jupyter contrib nbextension install
重新打开Jupyter Notebook。转到“编辑”选项卡,然后选择“ nbextensions配置”。取消直接在标题“ Configurable nbextensions”下的复选框,然后选择“可折叠标题”。
nbextensions config
直接从主仪表板访问而必须打开笔记本。或者,正如其他人所提到的,我们可以通过访问它localhost:8888/nbextensions
(或任何端口在您的配置)
这个问题有很多答案,在许多扩展中,我觉得所有这些都不令人满意(有些比其他更好),例如代码折叠,标题折叠等。没有一个人以简单有效的方式满足我的要求。令我惊讶的是,尚未实施解决方案(对于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兼容。我希望人们会发现这很有用!
潘岩建议的改进版本。它添加了显示代码单元的按钮:
%%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>"""))
我用来获得预期结果的是:
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()