소개
Matplotlib은 파이썬에서 정적, 애니메이션, 대화형 시각화를 생성하기 위한 종합 라이브러리입니다. 가장 인기 있는 데이터 시각화 라이브러리 중 하나이며, 파이썬을 사용하는 데이터 과학자나 분석가에게 필수적인 도구입니다.
꺾은선 그래프는 가장 기본적이고 널리 사용되는 그래프 유형 중 하나입니다. '마커(markers)'라고 불리는 일련의 데이터 포인트를 직선 세그먼트로 연결하여 정보를 표시합니다. 시간 간격에 따른 데이터의 추세(시계열)를 시각화하는 데 자주 사용되며, 이 때문에 보통 시간 순서대로 선이 그려집니다.
이번 실습에서는 처음부터 간단한 꺾은선 그래프를 만드는 방법을 배웁니다. 데이터 준비, 그래프 플로팅, 축에 설명 레이블 추가, 그리고 마지막으로 LabEx 환경에서 직접 볼 수 있도록 그래프를 이미지 파일로 저장하는 전체 과정을 다룹니다.
x 및 y 데이터 리스트 준비하기
이번 단계에서는 그래프에 사용할 데이터를 준비합니다. 무엇인가를 시각화하려면 먼저 데이터가 필요합니다. 간단한 2차원 꺾은선 그래프를 만들려면 x축(가로축)용 데이터 세트와 y축(세로축)용 데이터 세트, 이렇게 두 가지가 필요합니다.
데이터를 저장하기 위해 파이썬 리스트를 사용하겠습니다. 몇 년간의 인구 증가를 나타내는 간단한 데이터 세트를 만들어 보겠습니다.
먼저, 왼쪽 파일 탐색기에서 ~/project 디렉터리에 있는 main.py 파일을 엽니다. 이 파일에는 이미 필요한 임포트 문이 포함되어 있습니다.
이제 main.py에 다음 코드를 추가하여 x와 y 두 개의 리스트를 만듭니다.
import matplotlib.pyplot as plt
## Data for plotting
x = [2018, 2019, 2020, 2021, 2022]
y = [10, 12, 15, 18, 22]
여기서 x는 연도를 나타내고, y는 각 연도에 해당하는 인구수(단위: 백만 명)를 나타냅니다. 이 두 리스트는 꺾은선 그래프의 좌표 역할을 하게 됩니다.
plt.plot(x, y)를 사용하여 선 그래프 그리기
이번 단계에서는 준비한 데이터를 사용하여 실제 그래프를 만듭니다. plt로 임포트한 Matplotlib의 pyplot 모듈은 이 작업에 완벽한 plot() 함수를 제공합니다.
plt.plot() 함수는 x축 데이터와 y축 데이터라는 두 가지 주요 인수를 받습니다. 그런 다음 이 좌표들로 정의된 점들을 연결하는 선을 그리게 됩니다.
이전 단계에서 만든 데이터 리스트 바로 아래에 다음 줄을 main.py 스크립트에 추가합니다.
import matplotlib.pyplot as plt
## Data for plotting
x = [2018, 2019, 2020, 2021, 2022]
y = [10, 12, 15, 18, 22]
## Create the plot
plt.plot(x, y)
이 한 줄의 코드는 Matplotlib에 x와 y 리스트를 좌표로 사용하여 꺾은선 그래프를 그리도록 지시합니다. 하지만 지금 스크립트를 실행해도 아직 화면에는 아무것도 보이지 않습니다. 레이블을 추가하고 그래프를 파일로 명시적으로 저장하는 과정이 아직 남아 있기 때문입니다.
plt.xlabel()을 사용하여 x축 레이블 추가하기
이번 단계에서는 x축에 레이블을 추가합니다. 레이블이 없는 그래프는 보는 사람이 축이 무엇을 나타내는지 알 수 없기 때문에 의미가 없는 경우가 많습니다. 이는 명확하고 유익한 시각화를 만드는 데 있어 매우 중요한 부분입니다.
Matplotlib은 x축에 레이블을 추가할 수 있는 plt.xlabel() 함수를 제공합니다. 원하는 레이블을 문자열 형태로 이 함수에 전달하기만 하면 됩니다.
그래프에 'Year(연도)' 레이블을 추가해 보겠습니다. plt.plot() 호출 아래에 다음 줄을 main.py 스크립트에 추가하세요.
import matplotlib.pyplot as plt
## Data for plotting
x = [2018, 2019, 2020, 2021, 2022]
y = [10, 12, 15, 18, 22]
## Create the plot
plt.plot(x, y)
## Add x-axis label
plt.xlabel("Year")
이제 그래프의 가로축이 'Year'로 명확하게 표시됩니다.
plt.ylabel()을 사용하여 y축 레이블 추가하기
이번 단계에서는 y축에 레이블을 추가하여 그래프의 기본 레이블 지정을 완료합니다. x축과 마찬가지로 y축에도 사용자가 데이터를 이해할 수 있도록 설명해 주는 레이블이 필요합니다.
이를 위한 함수는 plt.ylabel()이며, plt.xlabel()과 정확히 같은 방식으로 작동합니다. 레이블 텍스트를 문자열로 전달하면 됩니다.
그래프에 'Population(인구수)' 레이블을 추가해 보겠습니다. plt.xlabel() 호출 바로 아래에 다음 줄을 main.py 스크립트에 추가하세요.
import matplotlib.pyplot as plt
## Data for plotting
x = [2018, 2019, 2020, 2021, 2022]
y = [10, 12, 15, 18, 22]
## Create the plot
plt.plot(x, y)
## Add x-axis label
plt.xlabel("Year")
## Add y-axis label
plt.ylabel("Population (in millions)")
양쪽 축에 모두 레이블이 지정되면서 그래프가 훨씬 더 이해하기 쉬워졌습니다.
plt.show()를 사용하여 그래프 표시하기
이번 단계에서는 그래프를 생성하고 확인합니다. 일반적인 데스크톱 환경에서는 plt.show()를 사용하여 새 창에 그래프를 띄울 수 있습니다. 하지만 LabEx와 같은 웹 기반 환경에서는 GUI 창을 열 수 없습니다.
대신 plt.savefig() 함수를 사용하여 그래프를 이미지 파일로 저장합니다. 이 함수는 현재 피겨(figure)를 프로젝트 디렉터리의 파일로 저장해 줍니다.
main.py 스크립트의 끝에 다음 줄을 추가합니다. 이렇게 하면 그래프가 line_plot.png라는 이름의 PNG 이미지로 저장됩니다.
import matplotlib.pyplot as plt
## Data for plotting
x = [2018, 2019, 2020, 2021, 2022]
y = [10, 12, 15, 18, 22]
## Create the plot
plt.plot(x, y)
## Add x-axis label
plt.xlabel("Year")
## Add y-axis label
plt.ylabel("Population (in millions)")
## Save the plot to a file
plt.savefig("line_plot.png")
이제 WebIDE에서 터미널을 엽니다(터미널 패널의 + 아이콘이나 메뉴의 Terminal > New Terminal을 사용할 수 있습니다). 다음 명령어로 스크립트를 실행합니다.
python3 main.py
명령어가 완료되면, 왼쪽 파일 탐색기에 line_plot.png라는 새 파일이 생성된 것을 볼 수 있습니다. line_plot.png를 더블클릭하여 열고 완성된 꺾은선 그래프를 확인해 보세요!

요약
축하합니다! Matplotlib을 사용하여 첫 번째 꺾은선 그래프를 성공적으로 만들고 저장했습니다.
이번 실습에서는 기본 그래프를 만드는 데 필요한 핵심 작업 흐름을 배웠습니다.
- 데이터 준비: x축과 y축 데이터를 담을 파이썬 리스트를 만들었습니다.
- 데이터 플로팅: 데이터를 기반으로 꺾은선 그래프를 생성하기 위해
plt.plot()을 사용했습니다. - 레이블 추가:
plt.xlabel()과plt.ylabel()을 사용하여 레이블을 추가함으로써 그래프를 더욱 유익하게 만들었습니다. - 그래프 저장: GUI가 없는 환경에서 필수적인 기능인
plt.savefig()를 사용하여 시각화 결과를 파일로 저장하는 방법을 배웠습니다.
이것은 Matplotlib으로 할 수 있는 일들의 시작에 불과합니다. 이제 이러한 기술을 바탕으로 더욱 복잡하고 맞춤화된 시각화를 구축할 수 있습니다. 계속해서 탐색해 보세요!



