Jupyter中的交互式绘图导致后续绘图被追加

时间:2017-06-07 16:24:51

标签: python matplotlib jupyter-notebook jupyter ipywidgets

我正在尝试在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)

1 个答案:

答案 0 :(得分: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)