2015-10-15 213 views
38

我正在使用ipython Jupyter筆記本。假設我定義了一個在屏幕上佔用大量空間的函數。有沒有辦法摺疊這個單元格?在jupyter筆記本中摺疊單元

我希望功能保持執行和可調用,但我想隱藏/摺疊單元格,以更好地可視化筆記本電腦。我怎樣才能做到這一點?

+2

哇,這已經是2017年並沒有簡單的解決方案 – user1700890

回答

10

您可以創建一個單元格,把下面的代碼在它:

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

運行該小區將隱藏所有輸入單元格。要顯示它們,您可以使用菜單清除所有輸出。

否則,你可以嘗試筆記本擴展象下面這樣:

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

+0

筆記本擴展是非常好的。還有一些其他的東西。 https://github.com/ipython-contrib/jupyter_contrib_nbextensions – shahensha

6

創建custom.js〜/ .jupyter /自定義的內部文件/有下列內容:

$("<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 [])摺疊任何單元格。

+2

這對我並不適用,因爲當自定義js被執行時,未被加載的div將被加載。但是,這可以解決setTimeout(function(){...},3000)中的所有內容。 – Steohan

+0

非常感謝@Steohan。這有幫助。 – shahensha

+1

將第4行更改爲: 'var c = $(event.target).closest('。cell.code_cell')' 和Steohan的建議將所有內容都包含在setTimeout中。 – proteome

23

jupyter contrib nbextensions Python包中包含可在筆記本中啓用的代碼摺疊擴展。按照鏈接(Github)獲取文檔。

要安裝使用命令行:

pip install jupyter_contrib_nbextensions 
jupyter contrib nbextension install --user 

爲了讓生活在其中的管理更容易,我還建議jupyter nbextensions configurator包。這爲您的Notebook界面提供了一個額外的選項卡,您可以從中輕鬆(去)激活所有已安裝的擴展。

安裝:

pip install jupyter_nbextensions_configurator 
jupyter nbextensions_configurator enable --user 
+4

很酷的東西,但我希望「Codefolding」nbextension可以摺疊整個單元格,而不僅僅是代碼塊。 – bsmith89

+0

我無法獲得擴展樹,如Github鏈接所述 – user2110239

+2

如果有人遇到了使用conda的安裝問題,請嘗試:'pip install jupyter_contrib_nbextensions' then 'jupyter contrib nbextensions install --sys-prefix --skip-running-check '。我希望jupyter默認會有這個包。 – user1700890

2

首先,遵循Energya的指示:

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

其次是關鍵:打開筆記本木星後,點擊Nbextension選項卡。現在從Nbextension提供的搜索工具(不是網絡瀏覽器)搜索「colla」,然後你會發現一些名爲「可摺疊標題」的東西

這就是你想要的!

0

還有潘燕建議的改進版本。它補充說,顯示代碼單元背面的按鈕:

%%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>"""))