seaborn distplot 循环惰性评估
seaborn distplot loop lazy evaluation
我正在使用 ipython notebook 并尝试使用以下函数导出 seaborn distplots。如果我调用该函数并一次仅使用一个变量执行,它就可以正常工作。如果我在循环中调用该函数,它会继续在前一个函数调用的 distplot 之上构建。
我想要的输出是函数每次在循环中调用时输出一个新的 displot。有没有办法强制评估或新的 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 的样子
这是循环中稍后的两次调用。
同样,这在一次调用和执行中工作得很好,但在循环时它会继续构建。
所以这与 matplotlib 和收盘数字有关。
需要的附加代码是导入:
import matplotlib.pyplot as plt
然后在函数的最后:
plt.close(fig)
这应该有助于 seaborn 和 matplotlib 的任何循环
我正在使用 ipython notebook 并尝试使用以下函数导出 seaborn distplots。如果我调用该函数并一次仅使用一个变量执行,它就可以正常工作。如果我在循环中调用该函数,它会继续在前一个函数调用的 distplot 之上构建。
我想要的输出是函数每次在循环中调用时输出一个新的 displot。有没有办法强制评估或新的 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 的样子
这是循环中稍后的两次调用。
同样,这在一次调用和执行中工作得很好,但在循环时它会继续构建。
所以这与 matplotlib 和收盘数字有关。
需要的附加代码是导入:
import matplotlib.pyplot as plt
然后在函数的最后:
plt.close(fig)
这应该有助于 seaborn 和 matplotlib 的任何循环