2017-06-07 5 views
2

私はJupyterでインタラクティブなプロットを作成しようとしていますが、プロットを生成するたびに新しいプロットを生成する置き換えられる現在のものの代わりに追加されます。どのようにこの問題を解決するための任意のアイデア?Jupyterで対話的にプロットすると、それに続くプロットが追加されます

field_ddl = widgets.Dropdown(
    options=['race', 'gender', 'grade'], 
    value='race', 
    description='field:', 
    disabled=False, 
    button_style='info' 
) 
graph_btn = widgets.Button(
    description='graph', 
    disabled=False, 
    button_style='success', 
    tooltip='distribution plot', 
    icon='check' 
) 

def graph_btn_clicked(e): 
    field = field_ddl.value 
    df[field].value_counts().plot(kind='bar', title=field) 

graph_btn.on_click(graph_btn_clicked) 

display(field_ddl) 
display(graph_btn) 

私はinteract機能を調べましたが、それは役に立たないようです。初期化するとグラフが作成されますが、別のフィールドを選択してもう一度ボタンを押すと何も起こりません。

interact(graph_btn_clicked, x=graph_btn) 
+0

私はそれがこの質問と同じ問題だと思う:https://stackoverflow.com/questions/44329068/jupyter-notebook-interactive-plot-with-widgets – ImportanceOfBeingErnest

答えて

3

あなたが次に図とにプロットする座標軸を作成し、対話型バックエンド

%matplotlib notebook 

を使用することができ、

fig, ax = plt.subplots() 

次にボタンがクリックされるたびに、古いプロットをクリア新しいものを同じ軸にプロットします。

def graph_btn_clicked(e): 
    field = field_ddl.value 
    ax.clear() 
    df[field].value_counts().plot(kind='bar', title=field, ax=ax) 
+1

'%のm​​atplotlibのをnotebook'はと競合しているようです'%matplotlib inline'です。このアプローチでは、必要に応じて両者を切り替える必要がありますか? –

関連する問題