Как создать живой график matplotlib в окне tkinter на Python 3?

Зачем использовать Tkinter для отображения графиков Matplotlib?

Tkinter, будучи стандартной библиотекой Python для создания графических интерфейсов, предоставляет простой и эффективный способ интеграции с Matplotlib, мощной библиотекой для визуализации данных. Интеграция позволяет создавать интерактивные приложения, где графики Matplotlib отображаются в окнах с элементами управления (кнопками, текстовыми полями и т.д.), что значительно расширяет возможности анализа данных и их представления. Представьте, например, панель мониторинга эффективности рекламной кампании в реальном времени, где графики динамически обновляются на основе поступающих данных из рекламных платформ.

Необходимые библиотеки: Matplotlib и Tkinter

Для работы нам понадобятся установленные библиотеки matplotlib и tkinter. Убедитесь, что они установлены в вашей среде Python. Это можно сделать с помощью pip:

pip install matplotlib tkinter

Хотя tkinter обычно входит в стандартную поставку Python, matplotlib необходимо установить отдельно.

Создание базового окна Tkinter

Начнем с создания простого окна Tkinter, которое послужит контейнером для нашего графика:

Реклама
import tkinter as tk

def main() -> None:
    root: tk.Tk = tk.Tk()
    root.title("Matplotlib в Tkinter")
    root.geometry("800x600")
    root.mainloop()

if __name__ == "__main__":
    main()

Этот код создает основное окно с заголовком «Matplotlib в Tkinter» и размером 800×600 пикселей.

Встраивание графика Matplotlib в окно Tkinter

Создание Figure и Axes для графика Matplotlib

Для начала нам нужно создать Figure и Axes объекты Matplotlib, на которых мы будем рисовать график:

import matplotlib.pyplot as plt

fig: plt.Figure = plt.Figure(figsize=(6, 4), dpi=100)
ax: plt.Axes = fig.add_subplot(111)

Figure – это контейнер для всего графика, а Axes – это область, где непосредственно рисуется график. figsize определяет размер графика в дюймах, а dpi – разрешение (точек на дюйм).

Использование FigureCanvasTkAgg для встраивания графика

FigureCanvasTkAgg из matplotlib.backends.backend_tkagg позволяет встроить Figure Matplotlib в окно Tkinter:

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

canvas: FigureCanvasTkAgg = FigureCanvasTkAgg(fig, master=root)
canvas.draw()

FigureCanvasTkAgg создает виджет, который можно разместить в окне Tkinter. Метод draw() отрисовывает график на этом виджете.

Размещение FigureCanvasTkAgg в окне Tkinter

Теперь разместим FigureCanvasTkAgg в окне Tkinter с помощью pack() или grid():

canvas_widget: tk.Widget = canvas.get_tk_widget()
canvas_widget.pack(side=tk.TOP, fill=tk.BOTH, expand=1)

get_tk_widget() возвращает Tkinter-виджет, представляющий график. pack() размещает виджет в верхней части окна, заполняя доступное пространство по горизонтали и вертикали.

Создание


Добавить комментарий