web-dev-qa-db-ja.com

ipythonノートブックのコードでのセル出力のクリア

IPythonノートブックには、シリアルポートとprintをリ​​アルタイムでリッスンするwhileループがあります。

私が達成したいのは、最新の受信データのみを表示することです(つまり、最新のデータを表示するのは1行のみです。セル出力領域はスクロールしません)。

私が必要なのは、新しいデータを受け取ったときに古いセルの出力をクリアし、新しいデータを印刷することです。古いデータをプログラムでクリアするにはどうすればよいですか?

92
aha

IPython.display.clear_output を使用して、セルの出力をクリアできます。

from IPython.display import clear_output

for i in range(10):
    clear_output()
    print("Hello World!")

このループの終わりには、Hello World!が1つだけ表示されます。

コードの例がなければ、動作するコードを提供するのは簡単ではありません。おそらく、最新のn個のイベントをバッファリングすることは、優れた戦略です。バッファが変更されるたびに、セルの出力をクリアして、バッファを再度印刷できます。

197
cel

そして、あなたがここに来た場合、私がしたように、JupyterのJuliaノートブックのプロットに対して同じことをして、プロットを使用して、あなたは以下を使用することができます:

    IJulia.clear_output(true)

したがって、複数の実行のアニメーションプロットの種類

    if nrun==1  
      display(plot(x,y))         # first plot
    else 
      IJulia.clear_output(true)  # clear the window (as above)
      display(plot!(x,y))        # plot! overlays the plot
    end

Clear_output呼び出しがないと、すべてのプロットが個別に表示されます。

0
marzetti