Saya menggunakan notebook ipython Jupyter. Katakanlah saya mendefinisikan sebuah fungsi yang menempati banyak ruang di layar saya. Apakah ada cara untuk meruntuhkan sel?
Saya ingin fungsi tetap dijalankan dan dapat dipanggil, namun saya ingin menyembunyikan / menutup sel untuk memvisualisasikan notebook dengan lebih baik. Bagaimana saya bisa melakukan ini?
View
>Collapse All Code
, lihat di sini dan tautannya di sini .Jawaban:
The
jupyter contrib nbextensions
paket Python berisi ekstensi kode-lipat yang dapat diaktifkan dalam notebook. Ikuti tautan (Github) untuk dokumentasi.Untuk menginstal menggunakan baris perintah:
Untuk membuat hidup lebih mudah dalam mengelolanya, saya juga merekomendasikan
jupyter nbextensions configurator
paketnya. Ini memberikan tab tambahan di antarmuka Notebook dari mana Anda dapat dengan mudah (de) mengaktifkan semua ekstensi yang diinstal.Instalasi:
sumber
pip install jupyter_contrib_nbextensions
lalujupyter contrib nbextensions install --sys-prefix --skip-running-check
. Saya berharap jupyter memiliki paket ini secara default.conda install -c conda-forge jupyter_contrib_nbextensions
.Due to major differences between the Jupyter Notebook and JupyterLab, the extensions in this repository will not work in JupyterLab
.JupyterLab mendukung penciutan sel. Mengklik pada bilah sel biru di sebelah kiri akan melipat sel.
sumber
source_hidden
danoutputs_hidden
sudah diatur. nbformat.readthedocs.io/en/latest/…Anda dapat membuat sel dan memasukkan kode berikut ke dalamnya:
Menjalankan sel ini akan menyembunyikan semua sel input. Untuk menampilkannya kembali, Anda dapat menggunakan menu untuk menghapus semua output.
Jika tidak, Anda dapat mencoba ekstensi notebook seperti di bawah ini:
https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/Home_3x
sumber
Saya memiliki masalah serupa dan "nbextensions" yang ditunjukkan oleh @Energya bekerja dengan sangat baik dan mudah. Petunjuk penginstalan langsung ke depan (saya mencoba dengan anaconda di Windows) untuk ekstensi notebook dan konfiguratornya .
Karena itu, saya ingin menambahkan bahwa ekstensi berikut harus menarik.
Sembunyikan Input | Ekstensi ini memungkinkan penyembunyian satu codecell di notebook. Ini dapat dilakukan dengan mengklik tombol toolbar:
Judul yang Dapat Dilipat | Mengizinkan buku catatan memiliki bagian yang dapat diciutkan, dipisahkan oleh judul
Codefolding | Ini telah disebutkan tetapi saya menambahkannya untuk kelengkapan
sumber
Buat file custom.js di dalam ~ / .jupyter / custom / dengan konten berikut:
$("<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'); } });
Setelah menyimpan, restart server dan segarkan notebook. Anda dapat menutup sel mana pun dengan mengklik label input (Dalam []).
sumber
var c = $(event.target).closest('.cell.code_cell')
dan mengikuti saran Steohan untuk membungkus semuanya di setTimeout.Ekstensi hide_code memungkinkan Anda untuk menyembunyikan sel individu, dan / atau petunjuk di sebelahnya. Pasang sebagai
Kunjungi https://github.com/kirbs-/hide_code/ untuk info lebih lanjut tentang ekstensi ini.
sumber
Pertama, ikuti instruksi Energya:
Kedua adalah kuncinya: Setelah membuka notebook jupiter, klik tab Nbextension. Sekarang Cari "colla" dari alat pencarian yang disediakan oleh Nbextension (bukan oleh web browser) , maka Anda akan menemukan sesuatu yang disebut "Collapsible Headings"
Ini yang kamu inginkan!
sumber
Ada banyak jawaban untuk pertanyaan ini, yang semuanya saya rasa tidak memuaskan (beberapa lebih dari yang lain), dari banyak ekstensi - pelipatan kode, pelipatan judul, dll. Tidak ada yang melakukan apa yang saya inginkan dengan cara yang sederhana dan efektif. Saya benar-benar kagum bahwa solusi belum diterapkan (seperti yang terjadi pada Jupyter Lab).
Faktanya, saya sangat tidak puas karena saya telah mengembangkan ekstensi notebook yang sangat sederhana yang dapat memperluas / menciutkan kode di sel notebook, sekaligus menjaganya tetap dapat dieksekusi.
Repositori GitHub: https://github.com/BenedictWilkinsAI/cellfolding
Di bawah ini adalah demo kecil tentang apa yang dilakukan ekstensi:
Cukup klik dua kali di kiri sel kode akan menciutkannya menjadi satu baris:
Mengklik dua kali lagi akan memperluas sel.
Ekstensi dapat dipasang dengan mudah dengan pip:
dan juga kompatibel dengan konfigurator nbextension . Saya berharap orang-orang akan merasakan manfaatnya!
sumber
Seperti yang disebutkan orang lain, Anda dapat melakukan ini melalui nbextensions. Saya ingin memberikan penjelasan singkat tentang apa yang saya lakukan, yang cepat dan mudah:
Untuk mengaktifkan judul yang dapat dilipat: Di terminal Anda, aktifkan / instal Ekstensi Notebook Jupyter dengan terlebih dahulu memasukkan:
Lalu, masukkan:
Buka kembali Jupyter Notebook. Buka tab "Edit", dan pilih "nbextensions config". Hapus centang pada kotak tepat di bawah judul "Ekstensi n yang dapat dikonfigurasi", lalu pilih "judul yang dapat diciutkan".
sumber
nbextensions config
langsung dari dasbor utama dan harus membuka buku catatan sebagai gantinya. Atau, seperti yang disebutkan orang lain, seseorang dapat mengaksesnya melaluilocalhost:8888/nbextensions
(atau port mana pun yang ada dalam konfigurasi Anda)Ada juga versi saran Pan Yan yang ditingkatkan. Ia menambahkan tombol yang menunjukkan sel kode kembali:
%%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>
Atau 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>"""))
sumber
Anda tidak perlu melakukan banyak hal kecuali mengaktifkan ekstensi:
http://localhost:8888/nbextensions?nbextension=collapsible_headings http://localhost:8888/nbextensions?nbextension=codefolding/main
Kemungkinan besar Anda akan menemukan semua ekstensi Anda di sini:
http://localhost:8888/nbextensions
sumber
Apa yang saya gunakan untuk mendapatkan hasil yang diinginkan adalah:
toggle_cell.py
di direktori yang sama dengan buku catatan Andafrom IPython.core.display import display, HTML toggle_code_str = ''' <form action="javascript:code_toggle()"><input type="submit" id="toggleButton" value="Show Sloution"></form> ''' toggle_code_prepare_str = ''' <script> function code_toggle() { if ($('div.cell.code_cell.rendered.selected div.input').css('display')!='none'){ $('div.cell.code_cell.rendered.selected div.input').hide(); } else { $('div.cell.code_cell.rendered.selected div.input').show(); } } </script> ''' display(HTML(toggle_code_prepare_str + toggle_code_str)) def hide_sloution(): display(HTML(toggle_code_str))
from toggle_cell import toggle_code as hide_sloution
hide_sloution()
sumber