colapsar celda en jupyter notebook

6 minutos de lectura

avatar de usuario
aloha

Estoy usando el cuaderno ipython Jupyter. Digamos que definí una función que ocupa mucho espacio en mi pantalla. ¿Hay alguna manera de colapsar la celda?

Quiero que la función permanezca ejecutada y se pueda llamar, pero quiero ocultar/contraer la celda para visualizar mejor el cuaderno. ¿Cómo puedo hacer esto?

  • JupyterLab tiene esto desde 2019. Resalte una celda y luego haga clic en la barra azul al lado. Lo verás representado como tres puntos ahora. Se respetará cuando guardes y vuelvas a abrir más tarde o en otro lugar. Hay más funciones y opciones, como View > Collapse All Codever aquí y el enlace aquí.

    – Wayne

    21 de febrero de 2020 a las 17:10


avatar de usuario
Energíaa

ACTUALIZAR:

el mas nuevo jupyter-lab es una interfaz más moderna y rica en funciones que admite el plegado de celdas de forma predeterminada. Vea la respuesta de @intsco a continuación

ACTUALIZAR 2

Ya que jupyter-lab ahora también admite extensiones, puede ampliar la función integrada de plegado de celdas con el Collapsible_Headings extensión.

Respuesta original:

los jupyter contrib nbextensions El paquete de Python contiene una extensión de plegado de código que se puede habilitar dentro del cuaderno. Siga el enlace (Github) para la documentación.

Para instalar usando la línea de comando:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

Para hacer la vida más fácil en el manejo de ellos, también recomendaría el jupyter nbextensions configurator paquete. Esto proporciona una pestaña adicional en la interfaz de su Notebook desde donde puede (des)activar fácilmente todas las extensiones instaladas.

Instalación:

pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

  • Cosas geniales, aunque desearía que la nbextensión “Codefolding” doblara celdas enteras, y no solo bloques de código.

    – bsmith89

    6 de febrero de 2017 a las 19:10

  • Si alguien tiene problemas de instalación con conda, intente: pip install jupyter_contrib_nbextensions después jupyter contrib nbextensions install --sys-prefix --skip-running-check. Desearía que jupyter tuviera este paquete por defecto.

    – usuario1700890

    26/10/2017 a las 17:44


  • La ruta de instalación más simple es a través de la propia conda: conda install -c conda-forge jupyter_contrib_nbextensions.

    – Max Genis

    5 de marzo de 2018 a las 1:45

  • Solo una nota rápida para cualquiera que use el JupyterLab más nuevo. Según el sitio GitHub mencionado, estas extensiones funcionan en JupyterLab. Yo mismo me preguntaba esto, así que pensé en dejar que otros lo supieran. Citando el repositorio de GitHub: Due to major differences between the Jupyter Notebook and JupyterLab, the extensions in this repository will not work in JupyterLab.

    – NYCeyes

    30 de noviembre de 2018 a las 19:14


  • PUEDE colapsar una celda entera si coloca un #comentario en la parte superior de la celda. Luego, Jupyter proporciona una flecha desplegable que colapsará toda la celda.

    – EatSleepCode

    13 de junio de 2019 a las 14:24

JupyterLab apoya el colapso celular. Al hacer clic en la barra de celda azul de la izquierda, se doblará la celda.
ingrese la descripción de la imagen aquí

  • aunque no persiste en exportar

    – cosmos

    4 sep 2019 a las 14:42

  • ¿Hay una buena solución para esto? Tengo muchas ganas de ocultar las celdas colapsadas cuando exporto. Quiero mantener algo de código y algo de salida, y ocultar algún otro código y salida, así que no puedo simplemente ocultar todos código…..

    –Russell Richie

    10 de enero de 2020 a las 17:16

  • El código y la salida se pueden colapsar como se describe en esta respuesta. Además, la información es persistente. Está escrito en los metadatos de la celda. source_hidden y outputs_hidden Está establecido. nbformat.readthedocs.io/en/latest/…

    – gillesb

    9 de abril de 2020 a las 12:27


  • Hermoso – exactamente lo que estaba buscando. Ojalá la interfaz de usuario hiciera que esta característica fuera más obvia de alguna manera.

    – flujo2k

    24 de noviembre de 2020 a las 8:07

  • ¿Esta extensión permite agrupar múltiples celdas (y subgrupos) en una jerarquía, como el front-end de Mathematica?

    – alancalvitti

    6 abr 2021 a las 15:40

Puedes crear una celda y poner el siguiente código en ella:

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

Ejecutar esta celda ocultará todas las celdas de entrada. Para volver a mostrarlos, puede usar el menú para borrar todas las salidas.

De lo contrario, puede probar las extensiones de cuaderno como se muestra a continuación:

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

Tuve un problema similar y las “nbextensions” señaladas por @Energya funcionaron muy bien y sin esfuerzo. Las instrucciones de instalación son sencillas (probé con anaconda en Windows) para las extensiones del portátil y por su configurador.

Dicho esto, me gustaría agregar que las siguientes extensiones deberían ser de interés.

  • Ocultar entrada | Esta extensión permite ocultar una celda de código individual en un cuaderno. Esto se puede lograr haciendo clic en el botón de la barra de herramientas:
    Ocultar entrada

  • Encabezados plegables | Permite que el cuaderno tenga secciones plegables, separadas por encabezados
    Encabezados plegables

  • Codificación | Esto ha sido mencionado pero lo agrego para completar
    plegado de código

Hay muchas respuestas a esta pregunta, todas las cuales siento que no son satisfactorias (algunas más que otras), de las muchas extensiones: plegado de código, plegado por encabezados, etc., ninguno hace lo que quiero de manera simple y efectiva. Estoy literalmente asombrado de que no se haya implementado una solución (como sucedió con Jupyter Lab).

De hecho, estaba tan insatisfecho que he desarrollado una extensión de notebook muy simple que puede expandir/contraer la código en una celda de cuaderno, manteniéndolo ejecutable.

El repositorio de GitHub: https://github.com/BenedictWilkinsAI/cellfolding

A continuación se muestra una pequeña demostración de lo que hace la extensión:

Simplemente haciendo doble clic a la izquierda de la celda del código, se colapsará en una sola línea:

Xo4LV

Hacer doble clic nuevamente expandirá la celda.

La extensión se puede instalar fácilmente con pip:

pip install nbextension-cellfolding
jupyter nbextension install --py cellfolding --user
jupyter nbextension enable --py cellfolding --user 

y también es compatible con configurador nbextension. ¡Espero que la gente encuentre esto útil!

  • Esto es brillante, aunque la nota para otros no funciona en Jupyter Labs, así que solo lo estoy ejecutando en Notebooks.

    –Dominic Woodman

    28 de junio a las 8:43

avatar de usuario
Sundar

Cree un archivo custom.js dentro de ~/.jupyter/custom/ con el siguiente contenido:

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

Después de guardar, reinicie el servidor y actualice el cuaderno. Puede contraer cualquier celda haciendo clic en la etiqueta de entrada (en[]).

  • Esto es brillante, aunque la nota para otros no funciona en Jupyter Labs, así que solo lo estoy ejecutando en Notebooks.

    –Dominic Woodman

    28 de junio a las 8:43

avatar de usuario
linas

La extensión hide_code le permite ocultar celdas individuales y/o las indicaciones junto a ellas. Instalar como

pip3 install hide_code

Visitar https://github.com/kirbs-/hide_code/ para obtener más información sobre esta extensión.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad