막대 차트 (Bar charts) 는 데이터 시각화에서 범주 간의 값을 비교하는 데 사용되는 기본적인 도구입니다. 막대 차트는 직사각형 막대로 데이터를 표현하며, 막대의 길이는 해당 값이 비례합니다.
이 실습에서는 Python 의 Matplotlib 라이브러리를 사용하여 막대 차트를 만드는 방법을 배우게 됩니다. 데이터를 준비하고, 수직 및 수평 막대 차트를 생성하며, 색상을 사용하여 모양을 사용자 정의하고, 마지막으로 범례를 추가하여 차트를 더 유익하게 만들 것입니다. 모든 플로팅은 Python 스크립트를 작성하고 차트를 이미지 파일로 저장하여 LabEx 환경에서 직접 볼 수 있도록 진행됩니다.
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 85%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.
범주 및 값 목록 준비
이 단계에서는 막대 차트의 기본 데이터를 설정하는 것부터 시작합니다. 막대 차트에는 두 가지 주요 구성 요소가 필요합니다. 축에 대한 범주 목록과 막대 크기를 결정하는 해당 숫자 값 목록입니다.
월별 판매 수치를 나타내는 간단한 데이터셋을 사용합니다. 먼저 왼쪽 파일 탐색기에서 ~/project 디렉터리에 있는 main.py 파일을 엽니다.
이제 main.py 파일에 다음 Python 코드를 추가합니다. 이 코드는 필요한 Matplotlib 라이브러리를 가져오고 데이터를 정의합니다.
import matplotlib.pyplot as plt
## Data for the bar chart
categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']
values = [320, 450, 500, 480, 600]
이 코드를 살펴보겠습니다.
import matplotlib.pyplot as plt: 이 줄은 matplotlib 라이브러리에서 pyplot 모듈을 가져와 일반적인 별칭인 plt를 부여합니다. plt를 사용하여 플로팅 함수를 호출합니다.
categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']: 이 목록에는 x 축 레이블이 포함되어 있습니다. 각 문자열은 범주를 나타냅니다.
values = [320, 450, 500, 480, 600]: 이 목록에는 각 범주에 해당하는 숫자 데이터가 포함되어 있습니다. 예를 들어, 'Jan'의 판매량은 320 입니다.
코드를 추가한 후 main.py 파일을 저장합니다. 다음 단계에서는 이 데이터를 사용하여 첫 번째 막대 차트를 만들 것입니다.
plt.bar() 를 사용하여 수직 막대 차트 생성
이 단계에서는 준비한 데이터를 사용하여 수직 막대 차트를 생성합니다. 이를 위한 주요 함수는 plt.bar()입니다. 이 함수는 x 축의 범주와 y 축의 해당 값을 사용하여 막대를 그립니다.
main.py 파일 끝에 다음 코드 줄을 추가합니다. 이 새 코드는 차트를 생성하고, 레이블과 제목을 추가하고, 이미지 파일로 저장합니다.
## Create the bar chart
plt.bar(categories, values)
## Add title and labels
plt.title('Monthly Sales Data')
plt.xlabel('Month')
plt.ylabel('Sales ($)')
## Save the plot to a file
plt.savefig('/home/labex/project/vertical_bar_chart.png')
print("Vertical bar chart saved as vertical_bar_chart.png")
새로운 코드에 대한 설명은 다음과 같습니다.
plt.bar(categories, values): 막대 차트를 생성하는 핵심 함수입니다. categories 목록을 x 축에, values 목록을 y 축의 막대 높이에 매핑합니다.
plt.title(), plt.xlabel(), plt.ylabel(): 이 함수들은 각각 차트에 제목을 추가하고 x 축과 y 축에 레이블을 추가하여 차트를 더 쉽게 이해할 수 있도록 합니다.
plt.savefig(...): GUI 환경이 아니므로 plt.show()로 차트를 직접 표시할 수 없습니다. 대신 plt.savefig()는 생성된 차트를 파일로 저장합니다. ~/project 디렉터리에 vertical_bar_chart.png로 저장합니다.
이제 터미널에서 스크립트를 실행합니다.
python3 main.py
다음과 같은 출력이 표시됩니다.
Vertical bar chart saved as vertical_bar_chart.png
vertical_bar_chart.png라는 새 파일이 파일 탐색기에 나타납니다. 이 파일을 두 번 클릭하여 첫 번째 막대 차트를 확인하세요!
plt.barh() 를 사용하여 수평 막대 차트 생성
이 단계에서는 수평 막대 차트를 만드는 방법을 배웁니다. 이는 수직 차트에서 겹칠 수 있는 긴 범주 레이블이 있는 경우 유용합니다. Matplotlib 은 이를 위해 plt.barh() 함수를 제공하며, 이 함수는 plt.bar()와 유사하게 작동하지만 막대를 수평으로 그립니다.
main.py 파일을 수정하여 plt.bar() 대신 plt.barh()를 사용합니다. plt.barh()의 경우 매개변수는 y (범주) 및 width (값) 입니다. xlabel과 ylabel도 바꿔야 합니다.
main.py 파일의 플로팅 섹션을 다음 코드로 바꾸세요.
## Create the horizontal bar chart
plt.barh(categories, values)
## Add title and labels
plt.title('Monthly Sales Data')
plt.xlabel('Sales ($)')
plt.ylabel('Month')
## Save the plot to a file
plt.savefig('/home/labex/project/horizontal_bar_chart.png')
print("Horizontal bar chart saved as horizontal_bar_chart.png")
이제 전체 main.py는 다음과 같이 보입니다.
import matplotlib.pyplot as plt
## Data for the bar chart
categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']
values = [320, 450, 500, 480, 600]
## Create the horizontal bar chart
plt.barh(categories, values)
## Add title and labels
plt.title('Monthly Sales Data')
plt.xlabel('Sales ($)')
plt.ylabel('Month')
## Save the plot to a file
plt.savefig('/home/labex/project/horizontal_bar_chart.png')
print("Horizontal bar chart saved as horizontal_bar_chart.png")
이제 업데이트된 스크립트를 터미널에서 실행합니다.
python3 main.py
다음과 같은 출력이 표시됩니다.
Horizontal bar chart saved as horizontal_bar_chart.png
프로젝트 디렉터리에서 새 파일 horizontal_bar_chart.png를 확인하고 열어 수평 막대 차트를 확인하세요.
color 매개변수를 사용하여 막대 색상 사용자 정의
이 단계에서는 막대 차트에 색상을 추가하여 향상시킵니다. Matplotlib 은 plt.bar() 또는 plt.barh() 함수의 color 매개변수를 사용하여 막대 색상을 쉽게 변경할 수 있도록 합니다. 모든 막대에 단일 색상을 설정하거나 각 막대를 개별적으로 색칠하기 위해 색상 목록을 제공할 수 있습니다.
수직 막대 차트로 돌아가서 각 막대에 다른 색상을 지정해 보겠습니다. main.py 파일을 수정하여 색상 목록을 포함하고 plt.bar() 함수에 전달합니다.
main.py 파일은 다음과 같이 업데이트되어야 합니다.
import matplotlib.pyplot as plt
## Data for the bar chart
categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']
values = [320, 450, 500, 480, 600]
colors = ['skyblue', 'lightgreen', 'salmon', 'gold', 'orchid']
## Create the bar chart with custom colors
plt.bar(categories, values, color=colors)
## Add title and labels
plt.title('Monthly Sales Data')
plt.xlabel('Month')
plt.ylabel('Sales ($)')
## Save the plot to a file
plt.savefig('/home/labex/project/colored_bar_chart.png')
print("Colored bar chart saved as colored_bar_chart.png")
이 코드에서:
차트의 각 막대에 해당하는 colors 목록을 정의했습니다.
이 목록을 plt.bar(categories, values, color=colors)의 color 매개변수에 전달했습니다.
이전 작업을 덮어쓰지 않도록 출력 파일 이름을 colored_bar_chart.png로 변경했습니다.
터미널에서 스크립트를 실행합니다.
python3 main.py
출력은 다음과 같습니다.
Colored bar chart saved as colored_bar_chart.png
새로 생성된 colored_bar_chart.png 파일을 열어 다채로운 막대 차트를 확인하세요.
plt.legend() 를 사용하여 범례 추가
이 마지막 단계에서는 차트에 범례를 추가하는 방법을 배웁니다. 범례는 특히 여러 데이터 세트를 플로팅할 때 차트의 다른 요소가 무엇을 나타내는지 설명하는 데 중요합니다.
범례를 추가하려면 먼저 플롯 데이터에 대한 label을 지정해야 합니다. 그런 다음 plt.legend() 함수를 호출하여 차트에 범례를 표시합니다.
main.py 스크립트를 수정하여 판매 데이터에 대한 레이블을 포함한 다음 범례를 렌더링해 보겠습니다.
main.py 파일을 다음 코드로 업데이트하세요.
import matplotlib.pyplot as plt
## Data for the bar chart
categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']
values = [320, 450, 500, 480, 600]
## Create the bar chart with a label
plt.bar(categories, values, color='skyblue', label='This Year Sales')
## Add title and labels
plt.title('Monthly Sales Data')
plt.xlabel('Month')
plt.ylabel('Sales ($)')
## Add the legend
plt.legend()
## Save the plot to a file
plt.savefig('/home/labex/project/bar_chart_with_legend.png')
print("Bar chart with legend saved as bar_chart_with_legend.png")
변경 사항은 다음과 같습니다.
plt.bar()에서 label='This Year Sales' 매개변수를 추가했습니다. 이렇게 하면 데이터 세트에 이름이 할당됩니다.
plt.legend() 호출을 추가했습니다. 이 함수는 플롯의 모든 레이블이 지정된 요소를 찾아 범례 상자를 만듭니다.
단순성을 위해 단일 색상 'skyblue'을 사용하고 최종 차트를 bar_chart_with_legend.png로 저장합니다.
스크립트를 마지막으로 실행합니다.
python3 main.py
최종 확인 메시지가 표시됩니다.
Bar chart with legend saved as bar_chart_with_legend.png
이제 파일 탐색기에서 bar_chart_with_legend.png를 엽니다. 범례가 포함된 막대 차트를 볼 수 있으며, 이는 막대를 "This Year Sales"로 올바르게 식별합니다.
요약
이 실습을 완료하신 것을 축하드립니다! Matplotlib 을 사용하여 막대 차트를 생성하고 사용자 지정하는 기본 사항을 성공적으로 학습했습니다.
이 실습에서는 다음을 배웠습니다.
플로팅을 위한 데이터 (범주 및 값) 준비.
plt.bar()를 사용하여 수직 막대 차트 생성.
plt.barh()를 사용하여 수평 막대 차트 생성.
color 매개변수를 사용하여 막대 모양 사용자 지정.
label 매개변수와 plt.legend() 함수를 사용하여 차트에 설명적인 범례 추가.
이러한 기술은 모든 데이터 분석 또는 시각화 작업에 필수적입니다. 이제 범주형 데이터를 비교하기 위한 명확하고 효과적인 막대 차트를 만들 수 있습니다. 다른 Matplotlib 기능을 사용하여 더욱 정교한 플롯을 만들기 위해 자유롭게 실험해 보세요.