2015-07-20 5 views
11

Gibt es eine Möglichkeit, eine bestimmte Eingabe- oder Ausgabezelle im IPython-Notizbuch selektiv zu verbergen?Wie blende ich eine bestimmte Zelle (Eingabe oder Ausgabe) in IPython Notebook?

Ich konnte nur den folgenden Code finden, um alle Eingabezellen ein-/auszublenden.

http://blog.nextgenetics.net/?e=102

Aber was, wenn ich will nur die erste Eingangszelle eines Notebooks verbergen?

+0

es scheint, gibt es keine einfache Weg? Ich denke, es wäre nützlich, weil Sie manchmal einige der Zellen verstecken wollen, die zu lang oder nicht besonders relevant für den Kontext sind. –

+0

Antworten für Leute in 2018. Sie könnten zu Jupyter Lab wechseln. Es gibt ein Hover-Over-Tool, das auf der linken Seite der Zelle erscheint (sowohl Code als auch Ausgabe) und darauf klickt, was * diese Zelle faltet * –

Antwort

7

Dies ist jetzt in nbconvert (as of 5.3.0) mit Tags eingebaut.

Hier ist ein Beispiel zum Entfernen einer bestimmten Zelle aus der Ausgabe. Verwenden this notebook. Das Beispiel enthält drei Zellen: eine Markdown-Zelle, eine Codezelle, die ausgeblendet wird, und eine Codezelle, die nicht ausgeblendet wird.

  1. Fügen Sie den remove_cell-Tag auf alle Zellen, die Sie wollen in das Notebook oder JupyterLab gebaut mit dem Tag-Editor verstecken (dem spezifischen Namen "remove_cell" keine Rolle spielt)
  2. Konvertieren mit nbconvert

    jupyter nbconvert nbconvert-example.ipynb --TagRemovePreprocessor.remove_cell_tags='{"remove_cell"}'

Alle Zellen mit dem Tag remove_cell wird von der Ausgabe entfernt werden.

hidden

Neben ganze Zellen, können Sie auswählen, gibt nur oder nur Ausgänge:

  • TagRemovePreprocessor.remove_input_tags
  • TagRemovePreprocessor.remove_single_output_tags
  • TagRemovePreprocessor.remove_all_outputs_tags
+0

Danke dafür. Funktioniert es jedoch nur für die HTML-Ausgabe? Nichts scheint in der resultierenden .ipynb-Datei versteckt zu sein, wenn 'jupyter nbconvert - to notebook --inplace ...' verwendet wird. – Jack

7

Hier ist eine Methode, die Sie nur Zellen aus der HTML/PDF-Ausgabe durch Bearbeiten der Zelle Metadaten verstecken kann.

Versionen Ich verwende:

$ jupyter notebook --version

4.1.0

$ jupyter nbconvert --version

4.2.0

  1. die Vorlagen ipython Notebook Erweiterung herunterladen, indem Sie Anweisungen folgen installieren auf Github: Pip installieren https://github.com/ipython-contrib/IPython-notebook-extensions/tarball/master
  2. Lauf jupyter notebook
  3. -localhost:8888/nbextensions gehen (oder was auch immer Port Sie begann auf) und aktivieren Printview
  4. zurück zu localhost:8888/tree gehen, erstellen Sie ein neues Notebook und gehen hinein
  5. einen Code Zelle erstellen mit ein Code, der die Ausgabe erzeugt, z print("You can see me") #but not me
  6. unterwegs View>Cell Toolbar>Edit Metadata
  7. klicken Sie auf die Schaltfläche Edit Metadata nun der oberen rechten Ecke der Zelle zeigt
  8. 'hide_input':True zum hinzufügen json z.B. Mine sah aus wie { "collapsed": false, "hide_input": true, "trusted": true } nach
  9. speichern Notebook
  10. gehen zurück zum Terminal und führen jupyter nbconvert --to pdf --template printviewlatex.tplx notebookname.ipynb

Sie sollten nun ein Dokument namens notebookname.pdf im Verzeichnis haben (wenn Ihr Notebook notebookname.ipynb.ipynb genannt wird). Hoffentlich sollte es nur den Text You can see me drin haben ... Daumen drücken.

3

Ihre Lösung zum Verstecken aller Eingangszellen kann so geändert werden, dass nur eine einzelne Zelle betroffen ist.

Ändern 'div.input' zu 'div.cell.code_cell.rendered.selected div.input'.

HTML('''<script> 
code_show=true; 
function code_toggle() { 
    if (code_show){ 
     $('div.cell.code_cell.rendered.selected div.input').hide(); 
    } else { 
     $('div.cell.code_cell.rendered.selected div.input').show(); 
    } 
    code_show = !code_show 
} 

$(document).ready(code_toggle); 
</script> 

To show/hide this cell's raw code input, click <a href="javascript:code_toggle()">here</a>.''') 

Dies funktioniert, weil, wenn Sie die „hier klicken“ auf die Ausgabe einer Zelle Aufforderung klicken, dass die Zelle die „ausgewählt“ Zelle wird und wird somit verborgen.

Wenn Ihr JavaScript-Code einen Toggle innerhalb der <script></script>-Tags mit einer Codezeile wie diese

$(document).ready(code_toggle); 

führt dann wird der Block automatisch („by default“) ausgeblendet werden, wenn die Eingangszelle ausgeführt wird.

Beachten Sie, dass, wenn Sie Zelle Eingänge standardmäßig ausgeblendet auszukommen, müssen Sie die Zelle mit den Run Zellen (Ctrl + Return) Option, nicht die Run Zellen und wählen Sie Ausführen/Einfügen unter Optionen. Dadurch wird die Bewegung des "ausgewählten" Labels zur nächsten Zelle vor dem Ausführen des JavaScript-Objekts veranlasst, sodass Sie möglicherweise eine Zelle ausblenden, in deren Ausgabe der "" -Klick-Link nicht angezeigt wird. In diesem Fall müssen Sie die Zelle inspizieren und durch die relevanten Tags navigieren und display='none'; zu display='block'; ändern.

Beachten Sie, dass dies am Ende eines beliebigen Codes in Ihrer Zelle stehen muss und dass Sie vor der Ausführung dieses Codes HTML aus IPython.display importieren müssen. Sie können durch die Ausführung

from IPython.display import HTML 
3

In Jupiter Notebook so tun, gibt es auch eine Option auf der Bar: enter image description here Sie können die Ausgabe Clear oder Sie können es Toggle mit verstecken. In beiden Fällen löschen Sie keine in der Zelle berechneten Variablen.