Saltar al contenido

¿Cómo ocultar una celda específica (entrada o salida) en IPython Notebook?

Solución:

Esto ahora está integrado en nbconvert (a partir de 5.3.0) usando etiquetas.

Aquí hay un ejemplo que elimina una celda específica de la salida. Usando este cuaderno. El ejemplo tiene tres celdas: una celda de reducción, una celda de código que se ocultará y una celda de código que no se ocultará.

  1. Añade el remove_cell etiqueta a cualquier celda que desee ocultar utilizando el editor de etiquetas integrado en el cuaderno o JupyterLab (el nombre específico “remove_cell” no importa)
  2. Convertir con nbconvert

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

Cualquier celda con la etiqueta remove_cell se eliminará de la salida.

oculto

Además de celdas completas, puede filtrar solo entradas o solo salidas:

  • TagRemovePreprocessor.remove_input_tags
  • TagRemovePreprocessor.remove_single_output_tags
  • TagRemovePreprocessor.remove_all_outputs_tags

Esta es una extensión de la respuesta de Mathmagician, que le permite:

  • alternar solo un unicelular (el nombre de la función JS tiene un sufijo aleatorio, por lo que si se usa más de una vez, no entraría en conflicto con otros usos)
  • alternar la celda debajo la celda actual – esta es muy útil en presentaciones RISE donde es posible que desee mostrar el código, pero luego ocultarlo para mostrar su salida

demostración de la palanca

Lo que debe hacer es ejecutar el siguiente código primero para definir el hide_toggle función:

from IPython.display import HTML
import random

def hide_toggle(for_next=False):
    this_cell = """$('div.cell.code_cell.rendered.selected')"""
    next_cell = this_cell + '.next()'

    toggle_text="Toggle show/hide"  # text shown on toggle link
    target_cell = this_cell  # target cell to control with toggle
    js_hide_current=""  # bit of JS to permanently hide code in current cell (only when toggling next cell)

    if for_next:
        target_cell = next_cell
        toggle_text += ' next cell'
        js_hide_current = this_cell + '.find("div.input").hide();'

    js_f_name="code_toggle_{}".format(str(random.randint(1,2**64)))

    html = """
        <script>
            function {f_name}() {{
                {cell_selector}.find('div.input').toggle();
            }}

            {js_hide_current}
        </script>

        <a href="https://foroayuda.es/javascript:{f_name}()">{toggle_text}</a>
    """.format(
        f_name=js_f_name,
        cell_selector=target_cell,
        js_hide_current=js_hide_current, 
        toggle_text=toggle_text
    )

    return HTML(html)

Y luego úselo en celdas como esta:

x = 1
y = 2
print('Result is {} + {}'.format(x, y))

hide_toggle()

O esto (si desea alternar la siguiente celda)

hide_toggle(for_next=True)

Este es un método que le permite ocultar celdas de la salida HTML / PDF editando solo los metadatos de la celda.

Versiones que estoy usando:

$ jupyter notebook --version

4.1.0

$ jupyter nbconvert --version

4.2.0

  1. Descargue las plantillas de extensión del cuaderno ipython siguiendo las instrucciones de instalación en Github: pip install https://github.com/ipython-contrib/IPython-notebook-extensions/tarball/master
    • Esto solo instala los archivos en su directorio de datos local de jupyter. Detalles completos en el archivo Léame
  2. correr jupyter notebook
  3. ir a localhost:8888/nbextensions (o cualquier puerto en el que comenzó) y active Printview
  4. volver a localhost:8888/tree, cree un nuevo cuaderno y acceda a él
  5. crear una celda de código con algún código que produzca una salida, por ejemplo print("You can see me") #but not me
  6. ir a View > Cell Toolbar > Edit Metadata
  7. haga clic en el Edit Metadata botón que ahora se muestra en la parte superior derecha de la celda
  8. agregar 'hide_input':True para el json, por ejemplo, el mío parecía {
    "collapsed": false,
    "hide_input": true,
    "trusted": true
    }
    después
  9. guardar cuaderno
  10. vuelve a la terminal y ejecuta jupyter nbconvert --to pdf --template printviewlatex.tplx notebookname.ipynb (si su cuaderno se llama notebookname.ipynb.ipynb)

Ahora debería tener un documento llamado notebookname.pdf en el directorio. Con suerte, debería tener solo el texto You can see me en ella … dedos cruzados.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *