【问题标题】:Hiding text but not matplotlib plots in IPython notebooks在 IPython 笔记本中隐藏文本而不是 matplotlib 绘图
【发布时间】:2025-02-23 06:30:02
【问题描述】:

有时我有一个很长的笔记本(本质上是一个实验室笔记本),里面有很多文字、标题、图表等。我想要的是能够过滤掉所有的文本并只显示图表,这样我可以快速了解笔记本中的内容或找到我想要的一个情节,但我不记得我把它放在哪里了。笔记本中有足够的文本,需要很长时间才能滚动浏览所有内容。我知道可以通过扩展来隐藏输入单元格,这在一定程度上有所帮助,但输出中通常也有很多文本。 matplotlib 图通常是“内联”的,因此它们只是嵌入的 png。因此,在保留图像的同时隐藏文本就足够了。

我查看了extension index,但没有找到任何合适的东西。我猜我可以使用 nbconvert 模板或一些 javascript 来实现这样的目标,但也许有人已经有了一个好方法。

【问题讨论】:

    标签: matplotlib ipython-notebook


    【解决方案1】:

    根据文本输出的类型,您可以通过 custom.js 隐藏 text_output 类。为此,将以下行添加到您的 custom.js:

    define([
        'base/js/namespace',
        'base/js/events'
        ],
        function(IPython, events) {
            events.on("app_initialized.NotebookApp",
                function () {
                $("#view_menu").append("<li id=\"toggle_toolbar\" title=\"Show/Hide text output\"><a href=\"javascript:text_toggle()\">Toggle Text Output</a></li>");
                }
            );
        }
    );
    
    
    text_show=true;
    function text_toggle() {
         if (text_show){
              $('div.output_text').hide();
         } else {
              $('div.output_text').show();
         }
         text_show = !text_show
    }
    

    这会在视图菜单中添加一个菜单条目来切换 output_text 类的可见性。

    当然,如果 Markdown 单元格中有一些文本,这些文本不会被隐藏。如果需要,应该直接修改上述代码以隐藏输入单元格(input 类、markdown 单元格(text_cell 类)等。

    【讨论】:

    • 谢谢 Jakob,它工作得很好,而且非常简单。你启发了我更多地了解笔记本格式。