python - seaborn distplot 循环惰性求值

标签 python matplotlib ipython seaborn

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

我想要的输出是让函数在每次循环调用时输出一个新的图表。有没有办法强制评估或新的分布图?

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

同样,只需一次调用和执行即可正常工作,但在循环时它会继续构建。

最佳答案

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

需要额外的代码导入:

import matplotlib.pyplot as plt

然后在函数末尾:

plt.close(fig)

这应该有助于处理 seaborn 和 matplotlib 的任何循环

关于python - seaborn distplot 循环惰性求值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38296074/

相关文章:

python - 列 : getting value_counts as columns in pandas 的多级索引

python - 使用嵌入式 shell 时,如何让 IPython autoreload 魔法自动加载?

python - 我该如何修复 : "TypeError: cannot unpack non-iterable NoneType object"

python - 如何在 Volttron 中使用 RPC

python - IP 地址或 CIDR block 匹配正则表达式

python - 如何在 Jupyter 中实时绘图

matplotlib - 使用 Python Jupyter Notebook 的弹出图

python - Pandas 数据框 : identifiy NaN and zero values in one statement

python - 如何为许多子图制作一个图例?

tensorflow - 在 Jupyter 中可视化 TensorFlow 图不起作用