ज्यूपिटर नोटबुक में पतन सेल


143

मैं ipython Jupyter नोटबुक का उपयोग कर रहा हूं। मान लीजिए कि मैंने एक फ़ंक्शन को परिभाषित किया है जो मेरी स्क्रीन पर बहुत सारे स्थान रखता है। क्या सेल को ढहाने का कोई तरीका है?

मैं चाहता हूं कि फ़ंक्शन निष्पादित और कॉल करने योग्य रहे, फिर भी मैं नोटबुक को बेहतर रूप से देखने के लिए सेल को छिपाना / पतन करना चाहता हूं। मैं यह कैसे कर सकता हूँ?


30
वाह, यह पहले से ही 2017 है और कोई सरल उपाय नहीं है
user1700890

31
2019 और अभी भी गिनती
हार्डियन लावी

23
2020 ... (पहले!)
itzy

5
आह, मैं एक रिमाइंडर डालूंगा ताकि मैं 2021 में पहली बार बन सकूं
नौसिखिया

6
JupyterLab में 2019 के बाद से यह है। एक सेल को हाइलाइट करें और फिर उसके बगल में नीली पट्टी पर क्लिक करें। अब आप इसे तीन बिंदुओं के रूप में दर्शाएंगे। जब आप बचाएंगे और बाद में या कहीं और फिर से खोलेंगे तो इसका सम्मान किया जाएगा। आगे सुविधाओं और विकल्प है, जैसे कि View> Collapse All Code, यहां देखें और यहां लिंक
वेन

जवाबों:


94

jupyter contrib nbextensionsअजगर पैकेज एक कोड-तह विस्तार है कि नोटबुक के भीतर सक्रिय किया जा सकता हैं। प्रलेखन के लिए लिंक (Github) का पालन करें।

कमांड लाइन का उपयोग कर स्थापित करने के लिए:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

उन्हें प्रबंधित करने में जीवन को आसान बनाने के लिए, मैं jupyter nbextensions configuratorपैकेज की भी सिफारिश करूंगा । यह आपके नोटबुक इंटरफ़ेस में एक अतिरिक्त टैब प्रदान करता है जहाँ से आप आसानी से (डी) सभी स्थापित एक्सटेंशन को सक्रिय कर सकते हैं।

स्थापना:

pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

11
शांत सामान, हालांकि मैं चाहता हूं कि "कोडफॉल्डिंग" नेक्स्टेंशन पूरे कोशिकाओं को मोड़ देगा, और न केवल कोड ब्लॉक।
bsmith89

2
अगर कोई भी conda try के साथ संस्थापन मुद्दों में चलता है: pip install jupyter_contrib_nbextensionsतब jupyter contrib nbextensions install --sys-prefix --skip-running-check। मेरी इच्छा है कि ज्यूपिटर में डिफ़ॉल्ट रूप से यह पैकेज होगा।
user1700890

7
सरल स्थापना पथ है conda खुद के माध्यम से : conda install -c conda-forge jupyter_contrib_nbextensions
मैक्स गेनिस

3
नए JupyterLab का उपयोग कर किसी के लिए बस एक त्वरित नोट। उल्लेखित GitHub साइट के अनुसार, ये एक्सटेंशन JupyterLab में काम करते हैं। मैं खुद को आश्चर्यचकित करता हूं इसलिए मुझे लगा कि मैं दूसरों को बताऊंगा। गिताभ रेपो का उद्धरण Due to major differences between the Jupyter Notebook and JupyterLab, the extensions in this repository will not work in JupyterLab:।
NYCeyes

2
यदि आप सेल के शीर्ष पर #comment लगाते हैं, तो आप एक संपूर्ण सेल को ध्वस्त कर सकते हैं। जुपिटर फिर एक ड्रॉप डाउन एरो प्रदान करता है जो पूरे सेल को ध्वस्त कर देगा।
EatSleepCode

27

आप एक सेल बना सकते हैं और उसमें निम्नलिखित कोड डाल सकते हैं:

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

इस सेल को चलाने से सभी इनपुट सेल छिप जाएंगे। उन्हें वापस दिखाने के लिए, आप सभी आउटपुट को साफ़ करने के लिए मेनू का उपयोग कर सकते हैं।

अन्यथा आप नीचे दिए गए नोटबुक एक्सटेंशन आज़मा सकते हैं:

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


नोटबुक एक्सटेंशन वास्तव में अच्छे हैं। अन्य चीजों का एक गुच्छा भी हैं। github.com/ipython-contrib/jupyter_contrib_nbextensions
shahensha

27

JupyterLab सेल गिरने का समर्थन करता है। बाईं ओर नीले सेल बार पर क्लिक करने से सेल फोल्ड हो जाएगा। यहां छवि विवरण दर्ज करें


6
हालांकि निर्यात पर कायम नहीं है
cosmosa

क्या इसके लिए कोई अच्छा उपाय है? जब मैं निर्यात करता हूं तो मैं बहुत बुरी तरह से ढह गई कोशिकाओं को छिपाना चाहता हूं। मैं कुछ कोड और कुछ आउटपुट रखना चाहता हूं, और कुछ अन्य कोड और आउटपुट छिपाता हूं, इसलिए मैं सभी कोड छिपा नहीं सकता हूं .....
रसेल रिची

2
इस उत्तर में वर्णित कोड और आउटपुट को ढहाया जा सकता है। इसके अलावा जानकारी कायम है। इसे सेल के मेटाडेटा में लिखा जाता है। source_hiddenऔर outputs_hiddenसेट है। nbformat.readthedocs.io/en/latest/...
gillesB

16

मेरे पास एक समान मुद्दा था और @Energya द्वारा इंगित "nbextensions" बहुत अच्छी तरह से और सहजता से काम किया। स्थापित निर्देश सीधे हैं (मैंने विंडोज पर एनाकोंडा के साथ प्रयास किया) नोटबुक एक्सटेंशन के लिए और उनके कॉन्फ़िगरेशन के लिए

उस ने कहा, मैं यह जोड़ना चाहूंगा कि निम्नलिखित एक्सटेंशन ब्याज की होनी चाहिए।

  • इनपुट छिपाएँ | यह एक्सटेंशन एक नोटबुक में एक व्यक्तिगत कोडेक को छिपाने की अनुमति देता है। यह टूलबार बटन पर क्लिक करके हासिल किया जा सकता है: इनपुट छिपाएँ

  • बंधनेवाला शीर्ष | नोटबुक्स को टूटने वाले अनुभागों की अनुमति देता है, शीर्षकों द्वारा अलग किया जाता है बंधनेवाला हेडिंग

  • कोडफोल्डिंग | इसका उल्लेख किया गया है लेकिन मैं इसे पूर्णता के लिए जोड़ता हूं Codefolding


9

कस्टम .js फ़ाइल को ~ / .jupyter / कस्टम / निम्नलिखित सामग्री के साथ बनाएँ:

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

सहेजने के बाद, सर्वर को पुनरारंभ करें और नोटबुक को ताज़ा करें। आप इनपुट लेबल ([]) पर क्लिक करके किसी भी सेल को ध्वस्त कर सकते हैं।


3
यह मेरे लिए काम नहीं आया क्योंकि जिस डिव को बदलना है उसे लोड नहीं किया जाता है, जब कस्टम जेएस निष्पादित किया जाता है। हालाँकि, यह सब कुछ सेटटाइमआउट (फ़ंक्शन () {...}, 3000) में तय किया जा सकता है;
स्टोहन

2
इसने 4 वीं पंक्ति को बदलने के बाद मेरे लिए काम किया: var c = $(event.target).closest('.cell.code_cell') और सेटोउटआउट में सब कुछ लपेटने के लिए स्टोहन के सुझाव का पालन किया।
प्रोट्रूशियंस

आप बस c.toggleClass ('पतन') का उपयोग कर सकते हैं; इफ-इफ स्टेटमेंट के बजाय।
गोवक्र

9

Hide_code एक्सटेंशन आपको व्यक्तिगत कोशिकाओं को छिपाने की अनुमति देता है, और / या उनके बगल में संकेत देता है। के रूप में स्थापित करें

pip3 install hide_code

यात्रा https://github.com/kirbs-/hide_code/ इस विस्तार के बारे में अधिक जानकारी के लिए।


9

सबसे पहले, एनर्जी के निर्देशों का पालन करें:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

दूसरी कुंजी है: बृहस्पति नोटबुक खोलने के बाद, Nbextension टैब पर क्लिक करें। अब Nbextension (वेब ​​ब्राउज़र द्वारा नहीं) द्वारा दिए गए खोज टूल से "कोला" खोजें , फिर आपको "Collapsible Headings" नामक कुछ मिलेगा।

ये वो है जो तुम चाहते हो!


2

जैसा कि दूसरों ने उल्लेख किया है, आप इसे nbextensions के माध्यम से कर सकते हैं। मैं जो कुछ भी करता था उसका संक्षिप्त विवरण देना चाहता था, जो त्वरित और आसान था:

मिली-जुली शीर्षकों को सक्षम करने के लिए: अपने टर्मिनल में, पहले दर्ज करके जुपिटर नोटबुक एक्सटेंशन को सक्षम / स्थापित करें:

pip install jupyter_contrib_nbextensions

फिर, दर्ज करें:

jupyter contrib nbextension install

ज्यूपिटर नोटबुक को फिर से खोलें। "संपादित करें" टैब पर जाएं, और "nbextensions config" चुनें। सीधे "अनचेकेबल नेक्स्टटेंशन" शीर्षक के तहत चेक बॉक्स को अनचेक करें, फिर "कोलैप्सेबल हेडिंग" चुनें।


आश्चर्य है कि कोई nbextensions configमुख्य डैशबोर्ड से सीधे क्यों नहीं पहुंच सकता है और इसके बजाय एक नोटबुक खोलना है। वैकल्पिक रूप से, जैसा कि दूसरों ने उल्लेख किया है, कोई भी इसे localhost:8888/nbextensions(या जो भी आपके कॉन्फ़िगरेशन में पोर्ट है) के माध्यम से एक्सेस कर सकता है
एंटोनी

2

इस सवाल के कई उत्तर हैं, जिनमें से सभी मुझे लगता है कि संतोषजनक नहीं हैं (कुछ की तुलना में अधिक), कई एक्सटेंशन के - कोड फोल्डिंग, हेडिंग द्वारा तह आदि। कोई भी ऐसा नहीं है जो मैं सरल और प्रभावी तरीके से चाहता हूं। मैं सचमुच हैरान हूं कि एक समाधान लागू नहीं किया गया है (जैसा कि जुपिटर लैब के लिए है)।

वास्तव में, मैं इतना असंतुष्ट था कि मैंने एक बहुत ही सरल नोटबुक एक्सटेंशन विकसित किया है जो एक नोटबुक सेल में कोड का विस्तार / पतन कर सकता है , जबकि इसे निष्पादित कर सकता है।

गिटहब भंडार: https://github.com/BenedictWilkinsAI/cellfolding

विस्तार क्या करता है इसका एक छोटा डेमो नीचे दिया गया है:

कोड सेल के बाईं ओर डबल क्लिक करने से यह एक ही लाइन में ढह जाएगा:

दोबारा क्लिक करने से सेल का विस्तार होगा।

विस्तार पाइप के साथ आसानी से स्थापित किया जा सकता है:

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

और भी nbextension विन्यासक के साथ संगत है । मुझे उम्मीद है कि लोग इसे उपयोगी पाएंगे!


2
एक जादू की तरह काम किया। साफ
अयान मित्रा

1

पैन यान सुझाव का एक उन्नत संस्करण भी है। यह वह बटन जोड़ता है जो कोड कोशिकाओं को दिखाता है:

%%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>

या अजगर:

# 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>"""))

2
कोड सभी इनपुट सेल को छुपाता है, किसी विशेष सेल को नहीं।
जैक फ्लीट

बस मैं आउटपुट के लिए क्या चाहता था, लेकिन आप इसे Jupyter मेनू में टॉगल करके सभी आउटपुट को छिपा / छिपा सकते हैं: सेल> सभी आउटपुट> टॉगल
मार्क

शर्म करो, यह एकमात्र समाधान है जो मैंने पाया कि कोड को डिफ़ॉल्ट रूप से छुपाता है और केवल इसे क्लिक पर दिखाता है। दुर्भाग्य से, यह सभी कोशिकाओं को छुपाता है न कि केवल एक लक्ष्य को।
पेनेलोप

@penelope आप जांच सकते हैं कि क्या अलग-अलग सेल में अलग-अलग html एलिमेंट्स आईडी या यूनिक क्लासेस हैं। यदि हाँ तो आप मेरे उत्तर को तदनुसार संशोधित कर सकते हैं। मेरा जवाब सभी कोशिकाओं को प्रभावित करता है क्योंकि यह कोशिकाओं के बीच अंतर नहीं करता है।
पीटर ज़गूबिसालो

1

एक्सटेंशन सक्षम करने के लिए आपको बहुत कुछ करने की आवश्यकता नहीं है:

http://localhost:8888/nbextensions?nbextension=collapsible_headings
http://localhost:8888/nbextensions?nbextension=codefolding/main

यहां छवि विवरण दर्ज करें

सबसे अधिक संभावना है कि आपको अपने सभी एक्सटेंशन यहां मिलेंगे:

http://localhost:8888/nbextensions

यहां छवि विवरण दर्ज करें


1

वांछित परिणाम प्राप्त करने के लिए मैं क्या उपयोग करता हूं:

  1. toggle_cell.pyअपनी निर्देशिका में अपनी नोटबुक के नाम वाली फ़ाइल में नीचे दिए गए कोड ब्लॉक को सहेजें
from 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))
  1. अपनी नोटबुक के पहले सेल में निम्नलिखित जोड़ें
from toggle_cell import toggle_code as hide_sloution
  1. किसी भी सेल आपको बस कॉल करने के लिए टॉगल बटन जोड़ने की जरूरत है hide_sloution()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.