더북(TheBook)

그래프 그리기

다음으로 Graph 프레임 부분을 작성해 봅시다. 먼저 그래프 그리는 graph_plot() 함수입니다. graph_plot() 함수는 네 가지 분석 버튼을 눌렀을 때 분석 버튼에 이벤트로 연결된 함수들이 공통으로 호출하는 함수입니다. 따라서 그래프로 그릴 인구와 그래프 제목 등을 인자로 입력받아 그래프를 그리고 레이블 graph_lbl 위치에 나타내면 됩니다.

화면 위에 matplotlib으로 그래프를 직접 그릴 수 있으나 방법이 복잡해 이 책에서는 다루지 않습니다. 그래서 화면에 그래프를 직접 그리는 대신 그래프를 이미지로 저장한 후, 이를 PhotoImage 객체로 저장해 graph_lbl 레이블에 표시하는 방법을 사용하겠습니다. dong_search2() 함수 아래에 graph_plot() 함수를 정의하는 코드를 다음과 같이 추가합니다. graph_plot()은 버튼에 이벤트로 연결될 함수가 아니기 때문에 매개변수를 사용할 수 있습니다.

import matplotlib.pyplot as plt

# 그래프 그리는 함수
def graph_plot(popu_list, label_list, graph_title):
    plt.figure(figsize=(10, 5)) # 그래프 크기 설정
    plt.rc('font', family='Malgun Gothic')
    plt.title(graph_title)
    for i in range(len(popu_list)):
        plt.plot(range(24), popu_list[i], label=label_list[i])
    plt.legend()
    plt.xlabel('시간대')
    plt.ylabel('평균인구수')
    plt.xticks(range(24), range(24))
    plt.savefig('graph.png') # 결과 그래프를 이미지로 저장하기
    plt.show()

    # 그래프 이미지를 PhotoImage의 객체로 만들고, graph_lbl 레이블에 표시하기
    graph_img = PhotoImage(file='graph.png')
    graph_lbl.configure(image=graph_img)
    graph_lbl.image = graph_img
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.