Сохранение графика matplotlib из другой функции как изображения, но без отображения графика - PullRequest
0 голосов
/ 05 мая 2020

Я пишу школьный проект на Python + Tkinter, и я пытаюсь создать кнопку, которая при нажатии сохраняет график, созданный в другой функции (createPlot ()), но без отображения фактического сюжета. Я хочу избежать повторения кода, поэтому я не хочу просто копировать код из функции createPlot () и изменять последнюю строку. Ты хоть представляешь, как это сделать? Буду признателен за любой совет. Вот основная часть кода:

def createPlot():
    try:
        plt.style.use('Solarize_Light2')
        plt.plot(analyzeTotalNumOfInfected(),color='y', label='Some Label')
        plt.plot(analyzeNumOfTestsPerDay(),color='r', linestyle='--', label='another Label')
        plt.legend()
        plt.tight_layout
        plt.grid(True)
        fig = plt.gcf()
        fig.canvas.set_window_title('Window title...')
        plt.title('Plot title')
        plt.ylabel('y axis')
        plt.xlabel('x axis')
        plt.show()
    except FileNotFoundError as e:
        messagebox.showerror("Error!", "Lorem Ipsum")

    except Exception as e:
        messagebox.showerror("Error2!", "Lorem Ipsum2")

def savePlot():
    fig = createPlot()
    fig.savefig(os.path.join(sFolder_path,"image.png"))

1 Ответ

0 голосов
/ 05 мая 2020

Вы можете изменить свой метод savePlot () на это, чтобы имена изображений не переопределялись:

from datetime import datetime

def savePlot():
    time = datetime.now().ctime().replace(" ", "")
    fig = createPlot()
    fig.savefig(os.path.join(sFolder_path, f"image@{time}.png"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...