2017-10-20 8 views
0

Jupyterノートブックに3つのBokeh散布図をインラインでプロットしようとしています。私はこれまでこれを行うことができましたが、Bokehを更新した後は動作させることができません。今何か別のことが必要なことはありますか?forループを使用してJupyterでインラインBokeh散布図を生成

from bokeh.plotting import figure, output_file, output_notebook, show 
output_notebook() 


x = dfList[0][1]['ValueA'] 

for i in range(0,3): 

    #Define figure 
    p = figure(plot_width=900, plot_height=600,  
      tools="pan,wheel_zoom,lasso_select,box_zoom,reset,save,undo") 

    #Add four datasets to figure 
    for t in range(4): 
     y = dfList[t][1]['ValueB'] 
     plot_data = p.circle(x,y) 

    #Display figure in notebook 
    show(p) 

上記のコードでは、最初のプロットのみが表示されます。私は

from bokeh.plotting import reset_output 

と3つのプロットを生成し、各繰り返し、上のshow(p)reset_output()を追加することを試してみましたが、彼らは私が欲しいものではありませんこれは、別のブラウザタブ内の各出力されます。

私のノートブックの最初のセルだけではなく、それぞれの繰り返しをoutput_notebook()に追加すると、残りの2つの繰り返しについては、「Loading BokehJS ...」というメッセージが表示されたまま最初のプロットが表示されます。

私は間違っていますか?

答えて

1

以前はうまくいきましたが、意図しない未定義の動作だと思います。 show関数は、のために、を次の出力セルの出力に置き換えることを常に心に留めていました。したがって、1つのセルで複数回実行することは決して考慮された使用パターンではありませんでした。いずれにしても、サポートの追加JupyterLabはノートブックディスプレイの機械にさまざまな変更を必要としています。しかし、私は、現在の行動が正しいこと、そして今後何が期待されるべきかを言います。

このような何かを行うための正しい方法は、いくつかの種類のレイアウトでプロットを収集して、レイアウトを表示することです:

from bokeh.layouts import column 
layout = column() 

for x in foo: 

    p = figure() 
    layout.children.append(p) 

show(layout) 
+0

はあなたの助けのためにありがとうございました。レイアウトを指定する方がはるかに意味があります。 – Violet

関連する問題