Tkinter Matplotlib

2024. 4. 5. 22:02GUI/tkinter

요약 : 이 튜토리얼에서는 Tkinter 애플리케이션에서 Matplotlib 라이브러리의 그래프를 표시하는 방법을 배웁니다.

 

 

Tkinter 애플리케이션의 matplotlib에서 막대 차트 표시

 

Matplotlib는 Python으로 전문적인 시각화를 생성하기 위한 타사 라이브러리입니다. Matplotlib 은 타사 라이브러리이므로 사용하기 전에 설치해야 합니다.

matplotlib 패키지를 설치하려면 다음 pip명령을 사용할 수 있습니다.

 
!pip install matplotlib
 

다음 matplotlib 프로그램은를 사용하여 인기도 기준 상위 5개 프로그래밍 언어를 보여주는 막대 차트를 만듭니다.

 
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')

 

이 경우 TkAggTkinter에 통합하기 위해 만들어진 백엔드를 사용합니다.

둘째, 다음 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 픽셀 그림을 만듭니다.

다섯째, Figure 개체를 Tkinter의 Canvas 개체 연결하는 FigureCanvasTkAgg 개체를 만듭니다.

 

figure_canvas = FigureCanvasTkAgg(figure, self)

 

FigureCanvasTkAgg 객체는 Canvas 객체가 아니지만 Canvas 객체를 포함한다는 점에 유의하세요.

여섯째, matplotlib의 내장 도구 모음을 만듭니다.

 

NavigationToolbar2Tk(figure_canvas, self)

 

일곱째, Figure에 서브플롯을 추가하고 서브플롯의 축을 반환합니다.

 

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)

 

요약

 
  • matplotlib 라이브러리를 사용하여 Tkinter 애플리케이션에서 전문가 수준의 시각화를 만듭니다.
 

'GUI > tkinter' 카테고리의 다른 글

Tkinter System Tray.  (0) 2024.04.06
Tkinter Validation  (0) 2024.04.04
Tkinter MVC  (0) 2024.04.03
How to Display a Progress Bar while a Thread is Running in Tkinter  (0) 2024.04.02
How to Schedule an Action with Tkinter after() method  (0) 2024.04.02