본문 바로가기
프로그래밍 (Programming)/파이썬 (Python)

Python Matplotlib 데이터 시각화 - 기본 그래프 그리기

by codingwalks 2024. 9. 25.
반응형

안녕하세요. 코딩산책입니다.

Python에서 데이터를 시각화하는 방법은 다양하지만, 그 중에서도 Matplotlib은 가장 널리 사용되는 시각화 라이브러리 중 하나입니다. 특히 데이터 분석에서 결과를 직관적으로 표현할 수 있는 막대 그래프, 선 그래프, 산점도 등 다양한 그래프를 간편하게 그릴 수 있습니다.
 

1. Matplotlib 설치하기

Matplotlib은 파이썬 패키지 관리자인 pip을 통해 쉽게 설치할 수 있습니다. 터미널이나 커맨드 라인에서 다음 명령어를 입력하여 설치하세요.

pip install matplotlib

 

2. Matplotlib 기본 설정

Matplotlib은 여러 모듈로 구성되어 있지만, 일반적으로 pyplot 모듈을 사용해 데이터를 시각화합니다. 먼저 Matplotlib의 pyplot 모듈을 불러옵니다.

import matplotlib.pyplot as plt

 
Troubleshooting
Python이 kiwisolver 패키지의 컴파일된 C 확장 (_cext)을 로드하지 못할 때 다음과 같은 에러를 발생합니다. 이는 설치 문제나 누락된 의존성 등 여러 이유로 발생할 수 있습니다.

에러 화면

1. kiwisolver 및 matplotlib 재설치: kiwisolver 설치가 손상되었을 수 있으므로, 이를 해결하려면 matplotlib과 함께 재설치해 보세요.

pip uninstall kiwisolver matplotlib
pip install kiwisolver matplotlib


2. Visual C++ 재배포 가능 패키지 설치: 많은 Python C 확장은 Microsoft Visual C++ Redistributable 설치가 필요합니다. Microsoft 다운로드 센터에서 재배포 패키지를 다운로드하여 설치하세요.

 

3. 기본 그래프 그리기

3.1. 선 그래프 (Line Plot)

선 그래프는 시간에 따른 데이터의 변화를 표현할 때 유용합니다. 간단한 예제를 통해 선 그래프를 그려봅시다.

from matplotlib import pyplot as plt
import numpy as np

# Data Preparation
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# Draw a line graph
plt.plot(x,y)

# Add title and axis labels
plt.title("Basic Line Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

# Graph Output
plt.show()

Line Plot

위 코드는 X축과 Y축에 데이터를 표시하며, 각 데이터 포인트를 선으로 연결하여 그래프를 생성합니다. plt.plot()은 선 그래프를 그리는 함수입니다.

3.2. 막대 그래프 (Bar Chart)

막대 그래프는 범주형 데이터의 비교를 시각화하는 데 자주 사용됩니다.

import matplotlib.pyplot as plt

# Data Preparation
categories = ['A', 'B', 'C', 'D', 'E']
values = [5, 7, 3, 8, 4]

# Draw a bar graph
plt.bar(categories, values)

# Add title and axis labels
plt.title("Basic Bar Chart")
plt.xlabel("Category")
plt.ylabel("Values")

# Graph Output
plt.show()

Bar Chart

plt.bar()는 막대 그래프를 그리는 함수입니다. 카테고리별 값의 높이를 막대로 표시합니다.

3.3. 산점도 (Scatter Plot)

산점도는 두 변수 간의 관계를 시각화하는 데 유용합니다. 각 데이터 포인트는 좌표평면 상에 점으로 표시됩니다.

import matplotlib.pyplot as plt

# Data Preparation
x = [1, 2, 3, 4, 5]
y = [2, 4, 4, 6, 8]

# Draw a scatter plot
plt.scatter(x, y)

# Add title and axis labels
plt.title("Basic Scatter Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

# Graph Output
plt.show()

Scatter Plot

plt.scatter()는 X축과 Y축에 데이터를 점으로 나타내는 산점도를 생성합니다.

 

4. 그래프 커스터마이징

4.1. 선 스타일, 색상 및 마커 설정

Matplotlib에서는 그래프의 선 스타일, 색상, 마커 등을 커스터마이징할 수 있습니다.

import matplotlib.pyplot as plt

# Data Preparation
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# Draw customized line graphs
plt.plot(x, y, color='red', linestyle='--', marker='o')

# Add title and axis labels
plt.title("Customized Line Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

# Graph Output
plt.show()

linestyle, color and marker

이 예제에서는 선의 색상을 빨간색(color='red'), 선 스타일을 점선(linestyle='--'), 각 데이터 포인트에 원형 마커(marker='o')를 추가했습니다.

4.2. 그래프 크기 조절

figsize 매개변수를 사용하여 그래프의 크기를 조절할 수 있습니다.

import matplotlib.pyplot as plt

# Data Preparation
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# Set graph size
plt.figure(figsize=(10, 5))

# Draw a line graph
plt.plot(x, y)

# Add title and axis labels
plt.title("Line Plot with Customized Size")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

# Graph Output
plt.show()

figure size

plt.figure()에 figsize=(가로, 세로) 형식으로 값을 전달하면 그래프의 크기를 조정할 수 있습니다.

 

5. 여러 그래프 그리기

Matplotlib에서는 여러 개의 그래프를 하나의 창에 그릴 수 있습니다.

import matplotlib.pyplot as plt

# Data Preparation
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 6, 8, 10]

# Draw two line graphs
plt.plot(x, y1, label="Line 1")
plt.plot(x, y2, label="Line 2")

# Add legend
plt.legend()

# Add title and axis labels
plt.title("Multiple Line Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

# Graph Output
plt.show()

Multi Line Plot

여기서는 두 개의 선 그래프를 겹쳐서 그렸습니다. plt.legend() 함수는 범례를 추가하여 각 그래프가 무엇을 나타내는지 설명합니다.

 

6. 결론

Matplotlib는 간단한 시각화를 시작하기에 훌륭한 도구입니다. 이번 글에서는 선 그래프, 막대 그래프, 산점도 등 기본적인 그래프를 다루었으며, 다양한 스타일과 옵션을 통해 그래프를 커스터마이징하는 방법을 배웠습니다. 이제 데이터를 더 잘 이해하고, 분석 결과를 시각적이며 효과적으로 전달하는 데 Matplotlib을 활용할 수 있게 되었습니다.

 

해당 포스트가 유용하셨다면 하단의 좋아요와 구독하기 부탁드립니다. ^^

Buy me a coffee

 

반응형