Saya memiliki notebook ipython / jupyter yang saya visualisasikan menggunakan NBviewer.
Bagaimana saya bisa menyembunyikan semua kode dari notebook yang dibuat oleh NBviewer, sehingga hanya output kode (mis. Plot dan tabel) dan sel-sel penurunan harga ditampilkan?
javascript
ipython
ipython-notebook
lucacerone
sumber
sumber
Jawaban:
sumber
<form action ... > ... </form>
dengan HTML sederhana sepertiThe raw code for this IPython notebook is by default hidden for easier reading.To toggle on/off the raw code, click <a href="javascript:code_toggle()">here</a>.
Ini sekarang dimungkinkan secara langsung dari nbconvert pada versi 5.2.1 : konten dapat difilter menggunakan opsi templat eksportir yang disertakan . Sebagai contoh:
akan mengecualikan sel "kode input", yaitu kode itu sendiri. Pilihan serupa ada untuk mengecualikan prompt, sel penurunan harga, atau output, atau input dan output.
(Opsi ini harus bekerja terlepas dari format output.)
sumber
Saya akan menggunakan
hide_input_all
dari nbextensions ( https://github.com/ipython-contrib/IPython-notebook-extensions ). Begini caranya:Cari tahu di mana direktori IPython Anda berada:
Unduh nbextensions dan pindahkan ke direktori IPython.
Edit file custom.js Anda di suatu tempat di direktori IPython (milik saya ada di profile_default / static / custom ) agar mirip dengan custom.example.js di direktori nbextensions .
Tambahkan baris ini ke custom.js :
Notebook IPython sekarang akan memiliki tombol untuk beralih sel kode, tidak peduli buku kerja.
sumber
Versi notebook IPython terbaru tidak lagi memungkinkan mengeksekusi javascript dalam sel penurunan harga, jadi menambahkan sel penurunan harga baru dengan kode javascript berikut tidak akan berfungsi lagi untuk menyembunyikan sel kode Anda (lihat tautan ini )
Ubah ~ / .ipython / profile_default / static / custom / custom.js seperti di bawah ini:
sumber
Saya menulis beberapa kode yang menyelesaikan ini, dan menambahkan tombol untuk mengaktifkan visibilitas kode.
Berikut ini masuk dalam sel kode di bagian atas buku catatan:
Anda dapat melihat contoh tampilannya di NBviewer di sini .
Pembaruan: Ini akan memiliki beberapa perilaku lucu dengan sel-sel Markdown di Jupyter, tetapi berfungsi baik dalam versi ekspor HTML notebook.
sumber
'.input_area'
dan'.prompt'
, gunakan'div.input'
dan itu berfungsi seperti pesona! Jadi untuk rekap, penggantijQuery("div.input").toggle();
di tempatjQuery('.input_area').toggle(); jQuery('.prompt').toggle();
. @ Max Masnick, bisakah Anda memperbaiki jawaban Anda?CSS = """#notebook div.output_subarea { max-width:100%;"""
HTML('<style>{}</style>'.format(CSS))
. Ini sangat berguna untuk mencetak.Ini dapat dilakukan dengan menggunakan
ToggleButton
widget IPython dan sedikit JavaScript. Kode berikut harus ditempatkan ke dalam sel kode di bagian atas dokumen:Ini menciptakan tombol berikut untuk beralih menampilkan / menyembunyikan kode untuk Notebook Jupyter, default ke keadaan "sembunyikan":
Ketika diatur ke "show" state, Anda kemudian dapat melihat kode untuk Notebook Jupyter:
Sebagai tambahan, sementara banyak dari kode ini harus diletakkan di awal Notebook, lokasi tombol sakelar adalah opsional. Secara pribadi, saya lebih suka menyimpannya di bagian bawah dokumen. Untuk melakukannya, cukup pindahkan
display(button)
baris ke sel kode terpisah di bagian bawah halaman:sumber
Ada solusi bagus yang disediakan di sini yang berfungsi dengan baik untuk notebook yang diekspor ke HTML. Situs web bahkan menghubungkan kembali ke sini untuk posting SO ini, tapi saya tidak melihat solusi Chris di sini! (Chris, kamu dimana?)
Ini pada dasarnya solusi yang sama dengan jawaban yang diterima dari harshil, tetapi memiliki keuntungan menyembunyikan kode toggle itu sendiri dalam HTML yang diekspor. Saya juga suka bahwa pendekatan ini menghindari perlunya fungsi HTML IPython.
Untuk menerapkan solusi ini, tambahkan kode berikut ke sel 'Raw NBConvert' di bagian atas buku catatan Anda:
Kemudian cukup ekspor notebook ke HTML. Akan ada tombol sakelar di bagian atas notebook untuk menampilkan atau menyembunyikan kode.
Chris juga memberikan contoh di sini .
Saya dapat memverifikasi bahwa ini berfungsi di Jupyter 5.0.0
Pembaruan : Juga nyaman untuk menampilkan / menyembunyikan
div.prompt
elemen besertadiv.input
elemennya. Ini menghapusIn [##]:
danOut: [##]
teks dan mengurangi margin di sebelah kiri.sumber
$('div.output').next().hide('500');
untuk menyembunyikan output selanjutnya? Saya sudah mencoba sendiri tetapi tidak bisa membuatnya bekerja.Untuk tampilan yang lebih baik dengan dokumen cetak atau laporan, kita perlu menghapus tombol juga, dan kemampuan untuk menampilkan atau menyembunyikan blok kode tertentu. Inilah yang saya gunakan (cukup salin-tempel ini ke sel pertama Anda):
Lalu di sel Anda berikutnya:
dan
sumber
Ini akan membuat output notebook IPython. Namun, Anda akan dapat melihat kode input. Anda dapat menyalin buku catatan, lalu menambahkan kode ini jika diperlukan untuk berbagi dengan seseorang yang tidak perlu melihat kode tersebut.
sumber
from IPython.display import HTML HTML('''<script> $('div.input').show()''')
Konversi sel menjadi Markdown dan gunakan
<details>
tag HTML5 seperti pada contoh denganjoyrexus
:https://gist.github.com/joyrexus/16041f2426450e73f5df9391f7f7ae5f
sumber
Berikut ini adalah solusi lain yang disarankan oleh p3trus :
Seperti dijelaskan oleh p3trus : "[Ini] menambahkan tombol ke bilah alat notebook ipython untuk menyembunyikan / menampilkan sel kode input. Untuk menggunakannya, Anda harus meletakkan file custom.js di
.ipython_<profile name>/static/custom/
folder Anda , di mana adalah profil ipython yang digunakan. "Komentar saya sendiri: Saya memverifikasi solusi ini dan berfungsi dengan iPython 3.1.0.
sumber
Solusi yang diterima juga berfungsi di julia Jupyter / IJulia dengan modifikasi berikut:
perhatikan khususnya:
display
fungsinya$
tanda (jika tidak dilihat sebagai variabel)sumber
Berikut ini adalah artikel yang bagus (yang sama @Ken diposting) tentang cara memoles notebook Jpuyter (IPython baru) untuk presentasi. Ada banyak cara untuk memperluas Jupyter menggunakan JS, HTML, dan CSS, termasuk kemampuan untuk berkomunikasi dengan kernel python notebook dari javascript. Ada dekorator ajaib untuk
%%HTML
dan%%javascript
Anda bisa melakukan hal seperti ini di dalam sel dengan sendirinya:Saya juga bisa menjamin metode Chris bekerja di jupyter 4.XX
sumber
Solusi yang sangat mudah menggunakan Konsol peramban. Anda menyalin ini ke konsol browser Anda dan tekan enter:
Kemudian Anda beralih kode sel hanya dengan mengklik jumlah input sel.
sumber
(Kertas) Mencetak atau Menyimpan sebagai HTML
Bagi Anda yang ingin mencetak keluaran kertas, jawaban di atas saja tampaknya tidak memberikan hasil akhir yang bagus. Namun, mengambil kode @Max Masnick dan menambahkan yang berikut memungkinkan seseorang untuk mencetaknya pada halaman A4 penuh.
Alasan untuk indentasi adalah bahwa bagian prompt dihapus oleh Max Masnick berarti semuanya bergeser ke kiri pada output. Namun ini tidak melakukan apa pun untuk lebar maksimum output yang dibatasi
max-width:100%-14ex;
. Ini mengubah lebar maks dari output_subarea kemax-width:100%;
.sumber
Dengan semua solusi di atas meskipun Anda menyembunyikan kode, Anda masih akan mendapatkan
[<matplotlib.lines.Line2D at 0x128514278>]
omong kosong di atas sosok yang mungkin tidak Anda inginkan.Jika Anda benar-benar ingin menyingkirkan input daripada hanya menyembunyikannya, saya pikir solusi terbersih adalah menyimpan angka Anda ke disk di sel tersembunyi, dan kemudian hanya memasukkan gambar dalam sel Markdown menggunakan mis
![Caption](figure1.png)
.sumber
_ = plt.plot()
tidak mencetaknya[<>]
omong kosongsumber
sumber