seaborn distplot循环懒惰的评价

时间:2016-07-10 20:11:50

标签: python matplotlib ipython seaborn

我正在使用ipython笔记本并尝试使用以下功能导出seaborn distplots。如果我调用函数并且一次只执行一个变量,它就可以正常工作。如果我在循环中调用该函数,它将继续构建在前一个函数调用的distplot之上。

我想要的输出是每次在循环中调用时输出新的displot的函数。有没有办法强制评估或新的情节?

def graph_extraversion (x):


    file_name = "extraversion_" + str(x) + ".png"
    sns_plot = sns.distplot(Personalities[Personalities.labels1 ==x].extraversion)
    sns_plot = sns.distplot(df.extraversion)
    fig = sns_plot.get_figure()
    fig.savefig(file_name)
    new_stat = Personalities[Personalities.labels1 ==x].extraversion.describe()
    extraversion_drift = extraversion_median - new_stat[1]
    drift = extraversion_drift / extraversion_std
    if (drift >= 1) | (drift <= -1):
        return "1 std deviation or more"
    else:
        return "Less than one std deviation"

这就是在一次通话后distplot的样子

enter image description here

这是后来循环中的两次调用。

enter image description here

再次通过一次调用和执行就可以正常工作,但是在循环时它会继续构建。

1 个答案:

答案 0 :(得分:1)

所以这与matplotlib和结束数字有关。

需要额外的代码是导入:

import matplotlib.pyplot as plt

然后在func结束时:

plt.close(fig)

这应该有助于任何使用seaborn和matplotlib的循环