2015-10-15 43 views
38

Ich benutze Ipython Jupyter Notebook. Nehmen wir an, ich habe eine Funktion definiert, die viel Platz auf meinem Bildschirm einnimmt. Gibt es eine Möglichkeit, die Zelle zusammenzubrechen?Kollaps Zelle in Jupyter Notebook

Ich möchte, dass die Funktion ausgeführt und aufrufbar bleibt, aber ich möchte die Zelle verstecken/ausblenden, um das Notebook besser zu visualisieren. Wie kann ich das machen?

+2

Wow, es ist schon 2017, und es gibt keine einfache Lösung – user1700890

Antwort

10

Sie können eine Zelle erstellen und den folgenden Code in es:

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

diese Zelle ausführen, werden alle Eingangszellen verstecken. Um sie anzuzeigen, können Sie über das Menü alle Ausgaben löschen.

Ansonsten können Sie Notebook-Erweiterungen wie unten probieren:

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

+0

Die Notebook-Erweiterungen sind wirklich gut. Es gibt noch eine Menge anderer Dinge. https://github.com/ipython-contrib/jupyter_contrib_nbextensions – shahensha

6

erstellen custom.js Datei in ~/.jupyter/custom/mit folgendem Inhalt:

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

Nach dem Speichern Neustart Server und aktualisieren Sie das Notebook. Sie können jede Zelle ausblenden, indem Sie auf das Eingabe-Label klicken (In []).

+2

Dies funktionierte nicht für mich, da das zu ändernde div nicht geladen wird, wenn die benutzerdefinierte js ausgeführt wird. Dies kann jedoch behoben werden, indem alles in setTimeout (function() {...}, 3000) eingeschlossen wird; – Steohan

+0

Vielen Dank @Steohan. Das hat geholfen. – shahensha

+1

Dies funktionierte für mich nach dem Ändern der 4. Zeile zu: 'var c = $ (event.target) .closes ('. Cell.code_cell')' und folgende Steohan Vorschlag, alles in SetTimeout zu wickeln. – proteome

23

Das jupyter contrib nbextensions Python-Paket enthält eine Code-faltende Erweiterung, die innerhalb des Notebooks aktiviert werden kann. Folgen Sie dem Link (Github) für die Dokumentation.

Um mit der Befehlszeile zu installieren:

pip install jupyter_contrib_nbextensions 
jupyter contrib nbextension install --user 

Um sie bei der Verwaltung das Leben leichter machen, habe ich auch die jupyter nbextensions configurator Paket empfehlen würde. Dies bietet eine zusätzliche Registerkarte in Ihrer Notebook-Oberfläche, über die Sie alle installierten Erweiterungen einfach (de) aktivieren können.

Installation:

pip install jupyter_nbextensions_configurator 
jupyter nbextensions_configurator enable --user 
+4

Coole Sachen, obwohl ich wünschte, die "Codefaltung" nbextension würde ganze Zellen falten, und nicht nur Codeblöcke. – bsmith89

+0

Ich bin nicht in der Lage, den Erweiterungsbaum wie in Github Link – user2110239

+2

beschrieben zu bekommen Wenn jemand in Installationsprobleme mit Conda auftritt versuchen: 'pip installieren jupyter_contrib_nbextensions' dann ' jupyter contrib nbextensions installieren --sys-prefix --skip-running-check '. Ich wünschte, Jupyter würde dieses Paket standardmäßig haben. – user1700890

5

Die hide_code Erweiterung ermöglicht es Ihnen, einzelne Zellen zu verstecken, und/oder die Aufforderungen neben ihnen. Installieren Sie als

Besuchen Sie https://github.com/kirbs-/hide_code/ für weitere Informationen über diese Erweiterung.

2

Zunächst folgen Energya Anweisung:

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

Zweitens ist der Schlüssel: Nach jupiter Notebook öffnen, klicken Sie auf die Registerkarte Nbextension. Jetzt Search „colla“ aus dem Suchwerkzeug durch Nbextension (nicht vom Web-Browser) zur Verfügung gestellt, dann werden Sie etwas namens „zusammenklappbare Rubriken“ finden

Dies ist, was Sie wollen!

0

Es gibt auch eine verbesserte Version von Pan Yan Vorschlag.Es fügt die Schaltfläche, die Code-Zellen zurück zeigt:

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

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