그래프 그리기
다음으로 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