2016-07-10 2 views
1

Я использую блокнот ipython и пытаюсь использовать следующую функцию для экспорта seaborn distplots. Он отлично работает, если я вызываю функцию и выполняю только одну переменную за раз. Если я вызываю функцию в цикле, она продолжает строить поверх дистрибутива от предыдущего вызова функции.seaborn distplot loop ленивая оценка

Мой желаемый выход будет состоять в том, чтобы функция выводила новый перенос каждый раз, когда он вызывается в цикле. Есть ли способ заставить оценку или новый расклад?

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

Опять же, это прекрасно работает с одного вызова и исполнения, но когда петельные он продолжает строить.

+0

Вы можете чтобы посмотреть на http://stackoverflow.com/questions/23969619/plotting-with-seaborn-using-the-matplotlib-object-oriented-interface. – mwaskom

+0

Я просмотрел проводку, но есть способ вернуть функцию вызывающему и создать новую фигуру в цикле. –

ответ

1

Так что это имеет отношение к matplotlib и закрывающим цифрам.

дополнительный код требуется импорт:

import matplotlib.pyplot as plt 

Затем в конце FUNC:

plt.close(fig) 

Это должно помочь с любым зацикливание как с Сиборн и Matplotlib

+1

Дополнительного импорта не требуется, просто 'fig.close()'. Использование фигурного объекта представляется более приемлемым способом для этого. – pbreach

Смежные вопросы