ipython Jupyter Notebookを使用しています。画面上で多くのスペースを占める関数を定義したとしましょう。セルを折りたたむ方法はありますか?
関数を実行して呼び出し可能なままにしたいが、ノートブックをより見やすくするためにセルを非表示/折りたたみたい。これどうやってするの?
ipython Jupyter Notebookを使用しています。画面上で多くのスペースを占める関数を定義したとしましょう。セルを折りたたむ方法はありますか?
関数を実行して呼び出し可能なままにしたいが、ノートブックをより見やすくするためにセルを非表示/折りたたみたい。これどうやってするの?
回答:
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がデフォルトでこのパッケージを持っていることを望みます。
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/...
私にも同様の問題があり、@ Energyaによって指摘された「nbextensions」は非常にうまく、簡単に機能しました。ノートブック拡張機能とそのコンフィギュレーターのインストール手順は簡単です(Windowsでanacondaを試してみました)。
とはいえ、以下の拡張機能に関心があると付け加えておきます。
〜/ .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')
を次のように変更し、 すべてをsetTimeoutでラップするというSteohanの提案に従って機能しました。
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
2つ目はキーです。ジュピターノートブックを開いたら、[Nbextension]タブをクリックします。今Nbextension(ないWebブラウザによって)が提供する検索ツールから「コラ」を検索し、その後、あなたは「折りたたみ見出し」と呼ばれるものがあります
これはあなたが望むものです!
他の人が述べたように、nbextensionsを介してこれを行うことができます。私がやったことの簡単な説明をしたかったので、それは素早く簡単でした。
コラボレーション可能な見出しを有効にするには:端末で、次のように入力してJupyter Notebook Extensionsを有効化/インストールします。
pip install jupyter_contrib_nbextensions
次に、次のように入力します。
jupyter contrib nbextension install
Jupyter Notebookを再度開きます。「編集」タブに行き、「nbextensions config」を選択します。タイトル「Configurable nbextensions」のすぐ下にあるチェックボックスをオフにして、「折りたたみ可能な見出し」を選択します。
nbextensions config
メインダッシュボードから直接アクセスできず、代わりにノートブックを開かなければならないのか疑問に思います。または、他の人が述べたように、localhost:8888/nbextensions
(または構成内のいずれかのポートを介して)アクセスできます
この質問に対する多くの答えがありますが、コード折りたたみ、見出しによる折りたたみなど、多くの拡張機能のうち、満足のいくものではない(他のものよりも多い)と思います。どれも、単純で効果的な方法では望みどおりに動作しません。(Jupyter Labのように)ソリューションが実装されていないことに文字通り驚いています。
実際、コードを展開/折りたたむことができる非常にシンプルなノートブック拡張機能を開発したので、私はとても不満でした、ノートブックセル内のを実行可能に維持しながら。
GitHubリポジトリ:https : //github.com/BenedictWilkinsAI/cellfolding
以下は、拡張機能の機能の小さなデモです。
コードセルの左をダブルクリックするだけで、1行に折りたたまれます。
もう一度ダブルクリックすると、セルが展開されます。
拡張機能は、pipを使用して簡単にインストールできます。
pip install nbextension-cellfolding
jupyter nbextension install --py cellfolding --user
jupyter nbextension enable --py cellfolding --user
また、nbextension configuratorとも互換性があります。これが役に立つと思います!
Pan Yan提案の改良版もあります。コードセルを表示するボタンを追加します。
%%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()