Pertanyaan Bagaimana cara menyembunyikan kode dari sel di notebook ipython divisualisasikan dengan nbviewer?


Saya memiliki notebook ipython / jupyter yang saya visualisasikan menggunakan NBviewer.

Bagaimana saya bisa menyembunyikan semua kode dari notebook yang diberikan oleh NBviewer, sehingga hanya output kode (misalnya plot dan tabel) dan sel penurunan harga ditampilkan?


76
2018-01-14 02:25


asal


Jawaban:


from IPython.display import HTML

HTML('''<script>
code_show=true; 
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
} 
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit" value="Click here to toggle on/off the raw code."></form>''')

134
2018-01-21 17:24



Saya akan menggunakan hide_input_all dari nbextensions (https://github.com/ipython-contrib/IPython-notebook-extensions). Begini caranya:

  1. Cari tahu di mana direktori IPython Anda:

    from IPython.utils.path import get_ipython_dir
    print get_ipython_dir()
    
  2. Unduh nbextensions dan memindahkannya ke direktori IPython.

  3. Edit Anda custom.js file di suatu tempat di direktori IPython (milikku berada di profile_default / static / custom) agar serupa dengan custom.example.js dalam nbextensions direktori.

  4. Tambahkan baris ini ke custom.js:

    IPython.load_extensions('usability/hide_input_all')
    

Notebook IPython sekarang akan memiliki tombol untuk beralih sel-sel kode, tidak peduli buku kerja.


14
2017-07-16 18:11



Versi notebook IPython terbaru tidak mengijinkan mengeksekusi javascript di sel markdown lagi, sehingga menambahkan sel markdown baru dengan kode javascript berikut tidak akan berfungsi lagi untuk menyembunyikan sel kode Anda (lihat Link ini)

Ubah ~ / .ipython / profile_default / static / custom / custom.js seperti di bawah ini:

code_show=true;
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
}

$([IPython.events]).on("app_initialized.NotebookApp", function () {
  $("#view_menu").append("<li id=\"toggle_toolbar\" title=\"Show/Hide code cells\"><a href=\"javascript:code_toggle()\">Toggle Code Cells</a></li>")
});

13
2018-04-20 03:04



Saya menulis beberapa kode yang menyelesaikan ini, dan menambahkan tombol untuk mengubah visibilitas kode.

Berikut ini adalah sel kode di bagian atas notebook:

from IPython.display import display
from IPython.display import HTML
import IPython.core.display as di # Example: di.display_html('<h3>%s:</h3>' % str, raw=True)

# This line will hide code by default when the notebook is exported as HTML
di.display_html('<script>jQuery(function() {if (jQuery("body.notebook_app").length == 0) { jQuery(".input_area").toggle(); jQuery(".prompt").toggle();}});</script>', raw=True)

# This line will add a button to toggle visibility of code blocks, for use with the HTML export version
di.display_html('''<button onclick="jQuery('.input_area').toggle(); jQuery('.prompt').toggle();">Toggle code</button>''', raw=True)

Anda bisa lihat contoh bagaimana tampilan ini di NBviewer di sini.

Memperbarui: Ini akan memiliki beberapa perilaku lucu dengan sel-sel Markdown di Jupyter, tetapi berfungsi dengan baik dalam versi ekspor HTML dari notebook.


6
2017-07-15 15:40



Untuk tampilan yang lebih baik dengan dokumen yang dicetak 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):

# This is a cell to hide code snippets from displaying
# This must be at first cell!

from IPython.display import HTML

hide_me = ''
HTML('''<script>
code_show=true; 
function code_toggle() {
  if (code_show) {
    $('div.input').each(function(id) {
      el = $(this).find('.cm-variable:first');
      if (id == 0 || el.text() == 'hide_me') {
        $(this).hide();
      }
    });
    $('div.output_prompt').css('opacity', 0);
  } else {
    $('div.input').each(function(id) {
      $(this).show();
    });
    $('div.output_prompt').css('opacity', 1);
  }
  code_show = !code_show
} 
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input style="opacity:0" type="submit" value="Click here to toggle on/off the raw code."></form>''')

Kemudian di sel Anda berikutnya:

hide_me
print "this code will be hidden"

dan

print "this code will be shown"

4
2017-08-05 17:53



Ada solusi bagus yang disediakan sini yang berfungsi dengan baik untuk buku catatan 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 di mana?)

Ini pada dasarnya solusi yang sama dengan jawaban yang diterima dari harshil, tetapi ia memiliki keuntungan menyembunyikan kode toggle itu sendiri dalam HTML yang diekspor. Saya juga suka bahwa pendekatan ini menghindari kebutuhan untuk fungsi HTML IPython.

Untuk mengimplementasikan solusi ini, tambahkan kode berikut ke sel 'Raw NBConvert' di bagian atas notebook Anda:

<script>
  function code_toggle() {
    if (code_shown){
      $('div.input').hide('500');
      $('#toggleButton').val('Show Code')
    } else {
      $('div.input').show('500');
      $('#toggleButton').val('Hide Code')
    }
    code_shown = !code_shown
  }

  $( document ).ready(function(){
    code_shown=false;
    $('div.input').hide()
  });
</script>
<form action="javascript:code_toggle()">
  <input type="submit" id="toggleButton" value="Show Code">
</form>

Kemudian cukup ekspor buku catatan ke HTML. Akan ada tombol toggle di bagian atas notebook untuk menampilkan atau menyembunyikan kode.

Chris juga memberikan contoh sini.

Saya dapat memverifikasi bahwa ini berfungsi di Jupyter 5.0.0

Memperbarui: Ini juga nyaman untuk menampilkan / menyembunyikan div.prompt elemen bersama dengan div.input elemen. Ini menghapus In [##]: dan Out: [##] teks dan kurangi margin di sebelah kiri.


4
2017-10-30 14:29



Gunakan Runtools yang memperluas notebook dasar iPython:

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


2
2018-01-14 16:39