2015-10-15 14 views
38

Sto usando il taccuino Jupyter ipython. Diciamo che ho definito una funzione che occupa molto spazio sul mio schermo. C'è un modo per far crollare la cella?collapse cell in jupyter notebook

Desidero che la funzione rimanga eseguita e chiamabile, tuttavia voglio nascondere/comprimere la cella per visualizzare meglio il notebook. Come posso fare questo?

+2

Wow, è già il 2017 e non esiste una soluzione semplice – user1700890

risposta

10

È possibile creare una cella e inserire il seguente codice in esso:

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

L'esecuzione di questo cellulare nasconderà tutte le cellule di ingresso. Per mostrarli di nuovo, puoi usare il menu per cancellare tutte le uscite.

Altrimenti si può provare le estensioni di notebook come di seguito:

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

+0

Le estensioni di notebook sono davvero buoni. Ci sono un sacco di altre cose. https://github.com/ipython-contrib/jupyter_contrib_nbextensions – shahensha

6

Creare custom.js file all'interno di ~/.jupyter/custom/con i seguenti contenuti:

$("<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'); 
    } 
}); 

Dopo il salvataggio, il riavvio il server e aggiorna il notebook. Puoi comprimere qualsiasi cella facendo clic sull'etichetta di input (In []).

+2

Questo non ha funzionato per me in quanto il div da modificare non viene caricato, quando viene eseguito il js personalizzato. Tuttavia, questo può essere risolto avvolgendo tutto in setTimeout (function() {...}, 3000); – Steohan

+0

Grazie mille @Steohan. Questo ha aiutato. – shahensha

+1

Questo ha funzionato per me, dopo aver cambiato il 4 ° linea: 'var c = $ (event.target) .closest ('cell.code_cell')' e seguendo il suggerimento di Steohan per avvolgere tutto in setTimeout. – proteome

23

Il pacchetto Python jupyter contrib nbextensions contiene un'estensione di piegatura del codice che può essere abilitata all'interno del notebook. Segui il link (Github) per la documentazione.

Per installare utilizzando riga di comando:

pip install jupyter_contrib_nbextensions 
jupyter contrib nbextension install --user 

per semplificare la vita nella loro gestione, consiglio anche il pacchetto jupyter nbextensions configurator. Ciò fornisce una scheda aggiuntiva nell'interfaccia del notebook da cui è possibile (de) attivare facilmente tutte le estensioni installate.

Installazione:

pip install jupyter_nbextensions_configurator 
jupyter nbextensions_configurator enable --user 
+4

Roba interessante, anche se spero che il nbextension "Codefolding" possa piegare intere celle, e non solo blocchi di codice. – bsmith89

+0

Non riesco a ottenere l'albero di estensione come descritto nel collegamento Github – user2110239

+2

Se qualcuno incontra problemi di installazione con conda prova: 'pip installa jupyter_contrib_nbextensions' quindi ' jupyter contrib nbextensions installa --sys-prefix --skip-running-check '. Vorrei che jupyter avesse questo pacchetto di default. – user1700890

5

L'estensione hide_code consente di nascondere le singole cellule, e/o le istruzioni accanto a loro. Installare come

pip3 install hide_code 

Visita https://github.com/kirbs-/hide_code/ per maggiori informazioni su questa estensione.

2

In primo luogo, seguire le istruzioni di Energya:

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

In secondo luogo è la chiave: Dopo l'apertura di Giove notebook, fare clic sulla scheda Nbextension. Ora Ricerca "colla" dallo strumento di ricerca fornito da Nbextension (non il browser web), allora troverete qualcosa chiamato "pieghevoli" Titoli

Questo è ciò che si vuole!

0

C'è anche una versione migliorata del suggerimento di Pan Yan.Si aggiunge il pulsante che mostra le cellule codice Indietro:

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

o 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>""")) 
Problemi correlati