Функция не завершает выполнение в функции «Hist» только во второй раз - PullRequest
0 голосов
/ 02 октября 2018

В Python DataFrame, я пытаюсь сгенерировать гистограмму, она генерируется в первый раз, когда вызывается функция.Однако, когда функция create_histogram вызывается во второй раз, она застревает на h = df.hist(bins=3, column="amount").Когда я говорю «застрял», я имею в виду, что он не завершает выполнение инструкции, и выполнение не продолжается до следующей строки, но в то же время не выдает никакой ошибки и не прерывает выполнение.Что именно проблема здесь и как я могу это исправить?

import matplotlib.pyplot as plt
...
...
    def create_histogram(self, field):
        df = self.main_df    # This is DataFrame
        h = df.hist(bins=20, column="amount")
        fileContent = StringIO()
        plt.savefig(fileContent, dpi=None, facecolor='w', edgecolor='w',
                    orientation='portrait', papertype=None, format="png",
                    transparent=False, bbox_inches=None, pad_inches=0.5,
                    frameon=None)
        content = fileContent.getvalue()
        return content

1 Ответ

0 голосов
/ 03 октября 2018

Наконец-то я понял это сам.

Всякий раз, когда я выполнял функцию, я всегда получал следующее сообщение журнала, но я игнорировал его из-за своей неосведомленности.

Backend TkAgg является интерактивным бэкэндом.Включение интерактивного режима.

Но потом я понял, что это может быть его работа в интерактивном режиме (что не было моей целью).Итак, я обнаружил, что есть способ отключить его, который приведен ниже.

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt 

И это исправило мою проблему.

ПРИМЕЧАНИЕ : use следует вызывать сразу после импорта matplotlib в указанной здесь последовательности.

...