2

我正在尝试在 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(graph_btn_clicked, x=graph_btn)
4

1 回答 1

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)
于 2017-06-07T16:35:08.817 回答