web-dev-qa-db-ja.com

jupyterノートブック/ jupyterlabの単一セルの背景色を変更するにはどうすればよいですか?

ユーザーが変更する可能性のある変数が、ノートブック全体で個別のセルにグループ化されるように、ノートブックを設計しています。これらのセルを別の背景色で強調表示して、ノブがどこにあるかをユーザーに明らかにしたいと思います。

どうすればそれを達成できますか?

注意: この関連する質問静的コードの強調表示(マニュアル用)であり、受け入れられた回答は基本的にすべてをマークアップコメント。私の場合、強調表示されたコードを実行可能なセルに入れます。

7
P-Gn

ここに行きます(Python kernelを使用している場合):

from IPython.display import HTML, display

def set_background(color):    
    script = (
        "var cell = this.closest('.jp-CodeCell');"
        "var editor = cell.querySelector('.jp-Editor');"
        "editor.style.background='{}';"
        "this.parentNode.removeChild(this)"
    ).format(color)

    display(HTML('<img src onerror="{}">'.format(script)))

次に、次のように使用します。

set_background('honeydew')

解決策は少しハックですが、よりエレガントな解決策が見られれば幸いです。デモ:

enter image description here

Firefox 60およびChrome 67でJupyterLab 0.32.1を使用してテスト済み。

セルマジックとして編集するには、次のようにします。

from IPython.core.magic import register_cell_magic

@register_cell_magic
def background(color, cell):
    set_background(color)

そしてそれを次のように使用します:

%%background honeydew
my_important_param = 42
9
krassowski

krassowskiのコード への小さな追加(コメントとして追加しようとしましたが、フォーマットを機能させることができませんでした)。

from IPython.core.magic import register_cell_magic
from IPython.display import HTML, display

@register_cell_magic
def bgc(color, cell=None):
    script = (
        "var cell = this.closest('.jp-CodeCell');"
        "var editor = cell.querySelector('.jp-Editor');"
        "editor.style.background='{}';"
        "this.parentNode.removeChild(this)"
    ).format(color)

    display(HTML('<img src onerror="{}">'.format(script)))

このように、あなたはそれを魔法として、そして通常の関数呼び出しの両方で使うことができます:

bgc('yellow')
bla = 'bla'*3

または

%%bgc yellow
bla = 'bla'*3
1
Gabe

nbconvertで変換されたセルの色のみを変更する必要がある場合は、テンプレートを作成しますmytemplate.tplをフォルダーに追加します。

{% extends 'full.tpl'%}
{% block any_cell %}
{% if 'highlight' in cell['metadata'].get('tags', []) %}
    <div style="background:lightpink">
        {{ super() }}
    </div>
{% else %}
    {{ super() }}
{% endif %}
{% endblock any_cell %}

(公式 docs から転載)

..次に、セルにタグ「highlight」を追加します。 Jupyterラボでは、選択したセルの左側でこれを行うことができます: enter image description here

次に、テンプレートを使用してnbconvertでノートブックを変換します。

jupyter nbconvert --to html 'mynb.ipynb' --template=mytemplate.tpl

結果のHTMLは次のようになります。

enter image description here

これは、特定のセルを読者に強調するのに適していることがわかりました。

0
Alex