【问题标题】:Interactive plotting in Jupyter results in subsequent plots being appendedJupyter 中的交互式绘图导致后续绘图被附加
【发布时间】:2017-11-09 03:06:34
【问题描述】:

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

【问题讨论】:

标签: python matplotlib jupyter-notebook jupyter ipywidgets


【解决方案1】:

您可以使用交互式后端

%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)

【讨论】:

  • %matplotlib notebook 似乎与%matplotlib inline 冲突。使用这种方法,我是否必须根据需要在两者之间切换?
猜你喜欢
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 2018-03-13
  • 2017-11-03
  • 1970-01-01
  • 2018-10-13
  • 2021-06-16
相关资源
最近更新 更多