Зачем использовать 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() размещает виджет в верхней части окна, заполняя доступное пространство по горизонтали и вертикали.