Как разместить график Matplotlib в окне Tkinter в Python
В этом уроке вы узнаете, как отобразить график из библиотеки Matplotlib в приложении Tkinter в Python.
Отображение столбчатой диаграммы из matplotlib в приложениях Tkinter
Matplotlib — сторонняя библиотека для создания профессиональных визуализаций на Python. Поскольку Matplotlib — сторонняя библиотека, перед использованием ее необходимо установить.
Чтобы установить пакет matplotlib, вы можете использовать следующую команду pip:
pip install matplotlib
Следующая программа использует matplotlib для создания столбчатой диаграммы, показывающей пять самых популярных языков программирования.
import tkinter as tk import matplotlib matplotlib.use('TkAgg') from matplotlib.figure import Figure from matplotlib.backends.backend_tkagg import( FigureCanvasTkAgg, NavigationToolbar2Tk ) class App(tk.Tk): def __init__(self): super().__init__() self.title('Tkinter Matplotlib Demo') # prepare data data = { 'Python': 11.27, 'C': 11.16, 'Java': 10.46, 'C++': 7.5, 'C#': 5.26 } languages = data.keys() popularity = data.values() # create a figure figure = Figure(figsize=(6, 4), dpi=100) # create FigureCanvasTkAgg object figure_canvas = FigureCanvasTkAgg(figure, self) # create the toolbar NavigationToolbar2Tk(figure_canvas, self) # create axes axes = figure.add_subplot() # create the barchart axes.bar(languages, popularity) axes.set_title('Top 5 Programming Languages') axes.set_ylabel('Popularity') figure_canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1) if __name__ == '__main__': app = App() app.mainloop()
Выход:
Как это работает.
- Сначала импортируем модуль matplotlib
import matplotlib
и вызовем функцию use(), чтобы указать, какой бэкэнд будет использовать matplotlib:
matplotlib.use('TkAgg')
В данном случае мы используем бэкэнд TkAgg, который создан для интеграции в Tkinter.
- Во-вторых, импортируем следующие классы Figure, FigureCanvasTkAgg и NavigationToolbar2Tk:
from matplotlib.figure import Figure from matplotlib.backends.backend_tkagg import( FigureCanvasTkAgg, NavigationToolbar2Tk )
- Класс Figure представляет область рисования, на которой будут отображаться диаграммы matplotlib.
- Класс FigureCanvasTkAgg представляет собой интерфейс между Figure и Tkinter Canvas.
- NavigationToolbar2Tk — это встроенная панель инструментов для фигуры на графике.
- В-третьих, подготовьте данные для отображения на гистограмме:
data = { 'Python': 11.27, 'C': 11.16, 'Java': 10.46, 'C++': 7.5, 'C#': 5.26 } languages = data.keys() popularity = data.values()
Данные представляют собой словарь, в котором ключи — языки программирования, а значения — их популярность в процентах.
- В-четвертых, создадим Figure для размещения диаграммы:
figure = Figure(figsize=(6, 4), dpi=100)
Объект Figure принимает два аргумента: размер в дюймах и количество точек на дюйм(dpi). В этом примере он создает фигуру размером 600×400 пикселей.
- В-пятых, создайте объект FigureCanvasTkAgg, который свяжет объект Figure с объектом Canvas Tkinter:
figure_canvas = FigureCanvasTkAgg(figure, self)
Обратите внимание, что объект FigureCanvasTkAgg не является объектом Canvas, но содержит объект Canvas.
- В-шестых, создайте встроенную панель инструментов matplotlib:
NavigationToolbar2Tk(figure_canvas, self)
- В-седьмых, добавьте к рисунку подграфик и верните оси подграфика:
axes = figure.add_subplot()
- Восьмое, создайте столбчатую диаграмму, вызвав метод bar() осей и передав в него языки и популярность. Также задайте заголовок и метку оси Y:
axes.bar(languages, popularity) axes.set_title('Top 5 Programming Languages') axes.set_ylabel('Popularity')
- Наконец, поместите диаграмму в корневое окно Tkinter:
figure_canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)