Python 打印Seaborn地物的输出小部件的清除输出不起作用

Python 打印Seaborn地物的输出小部件的清除输出不起作用,python,seaborn,ipywidgets,Python,Seaborn,Ipywidgets,我想创建一个输出小部件,包括几个下拉框和一个Seaborn绘图,如下所示。 其目的是使用不同的下拉框来选择变量,并根据用户输入输出不同的Seaborn图 这是代码。它可以工作,但没有达到预期效果 dd = wd.Dropdown( options=["YlGnBu","Blues","BuPu","Greens"], value="Blues", description='

我想创建一个输出小部件,包括几个下拉框和一个Seaborn绘图,如下所示。 其目的是使用不同的下拉框来选择变量,并根据用户输入输出不同的Seaborn图

这是代码。它可以工作,但没有达到预期效果

dd = wd.Dropdown(
    options=["YlGnBu","Blues","BuPu","Greens"],
    value="Blues",
    description='chosse cmap:',
    disabled=False,
)

myout = wd.Output()

def draw_plot(change):
    with myout:
        myout.clear_output()
        print('plotting out the following:   sns.heatmap(df.corr(), annot=True, cmap = "YlGnBu")')
        plt.figure(figsize=(8, 3))
        sns.heatmap(df.corr(), annot=True, cmap = change.new)
        plt.title("Correlation matrix");

dd.observe(draw_plot, names='value')
display(dd)
display(myout)
上述代码不会在每次选择dropbox的新变量并添加Seaborn绘图时清除输出小部件

我看到了这些解决方案:

根据我的意见,这并不令人满意。我希望每次在输出小部件中显示一个新的图形,即完全清除内容,然后再次添加内容;再次策划。 我不明白为什么clear_output()会清除文本行,但不会清除图形

其次,正如前面提到的链接中的一些答案所指出的,如果与Seaborn合作,我不想求助于底层库,即Matplotlib。我认为这是一种变通办法

那么正确的方法是什么呢


谢谢

以下代码适合我

我不确定这是否是打字错误,但您编写了
clear\u output()
而不是
myout.clear\u output()

另外,我认为您需要在回调结束时调用
plt.show()

将ipywidgets作为wd导入
将numpy作为np导入
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
a=np.random.random(大小=(5,5))
dd=wd.下拉列表(
选项=[“YlGnBu”、“蓝色”、“布普”、“绿色”],
value=“Blues”,
description='chosse cmap:',
禁用=错误,
)
myout=wd.Output()
def绘图(更改):
使用myout:
打印('打印出以下内容:sns.heatmap(df.corr(),annot=True,cmap=“{}”)'.format(change.new))
myout.clear_输出()
sns.heatmap(a,annot=True,cmap=change.new)
plt.show()
dd.observe(绘制图,名称=值)
显示器(dd)
显示(myout)

这里是诀窍。在我的代码中,这一行是plt.title(“相关矩阵”);以“;”结尾删除“;”并添加行plt.show()将使其正常工作。问题仍然是为什么?