logo

[데이터 시각화 소개] Python 및 Matplotlib 기초

 

Matplotlib 소개

Matplotlib이란?

Matplotlib은 Python에서 데이터를 시각화하기 위한 가장 인기 있는 라이브러리 중 하나입니다. 이 라이브러리는 출판 품질의 그래픽을 생성할 수 있게 해주는 매우 강력한 도구로, 간단한 그래프부터 복잡한 시각화까지 넓은 범위의 그래픽을 지원합니다. Matplotlib을 사용하면 라인 플롯, 바 차트, 에러바, 히스토그램, 파이 차트, 스캐터 플롯, 등고선 플롯, 3차원 플롯 등 다양한 유형의 시각화를 만들 수 있습니다.

Matplotlib의 구성 요소

Matplotlib의 핵심 개념에는 여러 구성 요소가 있습니다. 가장 중요한 것은 Figure와 Axes이며, 이 둘은 Matplotlib에서 그래프를 구성하는 기본이 됩니다.

  • Figure: 전체 그림이나 차트를 의미하며, 하나의 Figure는 여러 개의 Axes를 포함할 수 있습니다.
  • Axes: 대부분의 시각화에서 작업하는 영역으로, 실제로 데이터가 표현되는 곳입니다. Axes 안에는 축(axis), 타이틀(title), 틱(tick) 레이블 등이 포함될 수 있습니다.

pyplot: Matplotlib의 핵심 모듈

Matplotlib에서 가장 많이 사용되는 모듈은 matplotlib.pyplot입니다. 일반적으로 plt라는 약어로 임포트되며, 이 모듈은 MATLAB과 유사한 인터페이스를 제공하여 사용자가 쉽게 그래프를 그리고 사용자 정의할 수 있게 해줍니다. pyplot 모듈을 사용하면 간단한 코드 몇 줄로 데이터를 시각화할 수 있는데, 이는 데이터 분석 과정에서 빠르게 결과를 확인하거나, 복잡한 시각화 작업을 단계별로 구성할 때 매우 유용합니다.

 

예시 코드: pyplot 사용하기

아래는 pyplot 모듈을 사용하여 간단한 선 그래프를 그리는 예시입니다.

import matplotlib.pyplot as plt

# 데이터 준비
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]

# 그래프 그리기
plt.plot(x, y)

# 제목과 축 레이블 추가
plt.title('Simple Line Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 그래프 표시
plt.show()

Seaborn을 사용한 예시

Seaborn은 Matplotlib을 기반으로 하여 좀 더 고급 시각화 기능을 제공하는 라이브러리입니다. Matplotlib에 비해 시각적으로 더 만족스러운 결과를 쉽게 얻을 수 있습니다. Seaborn를 사용해 동일한 데이터로 시각화를 해보겠습니다.

import seaborn as sns

# seaborn에 기본으로 설정된 스타일 적용
sns.set()

# 데이터 준비
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]

# 그래프 그리기(내부적으로 matplotlib를 사용)
sns.lineplot(x=x, y=y)

# 제목 추가
plt.title('Simple Line Plot with Seaborn')

# 그래프 표시
plt.show()

이 코드는 Seaborn을 사용하여 같은 선 그래프를 더 간단하고 세련된 디자인으로 그릴 수 있음을 보여줍니다. Seaborn은 내부적으로 Matplotlib을 사용하기 때문에, Matplotlib으로 그래프를 그린 후 Seaborn을 사용하여 스타일을 변경하는 것도 가능합니다.


 

기본 그래프 그리기

Matplotlib는 파이썬의 가장 널리 사용되는 데이터 시각화 라이브러리 중 하나로, 간단한 방법으로 고품질의 그래프를 생성할 수 있는 기능을 제공합니다. Matplotlib를 활용하여 다양한 유형의 그래프를 그릴 수 있으며, 이는 데이터 분석을 위한 시각적 도구로 매우 유용합니다.

간단한 선 그래프 그리기

선 그래프는 데이터의 추세를 보여주기에 적합하며, 두 변수 간의 관계를 시각화하는 데 자주 사용됩니다. Matplotlib를 사용하여 선 그래프를 그리는 과정은 다음과 같습니다.

Python 코드 예시:

import matplotlib.pyplot as plt
import numpy as np

# 데이터 준비
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 간단한 선 그래프 그리기
plt.plot(x, y)
plt.show()

이 코드는 0부터 10까지의 구간을 100개의 점으로 나눈 후, 해당 점들에 대한 sin 값을 계산하여 선 그래프로 표현합니다.

 

선 스타일과 색상 설정

선의 스타일 변경하기

선 그래프를 그릴 때, 선의 스타일을 변경하여 다양한 효과를 낼 수 있습니다. Matplotlib에서는 점선(dotted), 파선(dashed) 등 여러 가지 선 스타일을 제공합니다.

Python 코드 예시:

plt.plot(x, y, linestyle='--') # 파선 스타일
plt.show()

plt.plot(x, y, linestyle=':') # 점선 스타일
plt.show()

선 스타일을 변경하는 linestyle 파라미터를 사용하여 선의 스타일을 지정할 수 있습니다.

선의 색상 변경하기

선의 색상을 변경하는 것은 정보를 명확하게 전달하기 위해 매우 중요할 수 있습니다. Matplotlib에서는 색상을 지정하는 여러 방법을 제공합니다.

Python 코드 예시:

plt.plot(x, y, color='red') # 선의 색상을 빨간색으로 변경
plt.show()

plt.plot(x, y, color='#00ff00') # HEX 코드를 사용하여 색상 지정
plt.show()

color 파라미터를 사용하여 RGB, HEX 코드 등 다양한 방식으로 선의 색상을 변경할 수 있습니다. 이를 통해 시각적으로 구분하기 쉽고, 의미 전달이 명확한 그래프를 만들 수 있습니다.

기본적인 선 스타일과 색상 설정을 통해 데이터 시각화에서 중요한 정보를 강조하거나, 여러 데이터 세트를 구분하기 위한 시각적 도구로 사용할 수 있습니다. Matplotlib와 같은 시각화 라이브러리를 통해 데이터를 더욱 풍부하고 의미 있게 전달할 수 있습니다.


축과 레이블, 제목을 추가하는 것은 데이터 시각화의 중요한 단계입니다. 이들은 시각적 표현을 더욱 명확하고 의미 있게 만들어주며, 데이터의 이해를 돕습니다. Matplotlib와 Seaborn을 사용하여 Python에서 이러한 작업을 어떻게 수행할 수 있는지 살펴보겠습니다.

 

축 설정하기

축 범위 조절하기

Matplotlib에서는 xlim()ylim() 함수를 사용하여 X축과 Y축의 범위를 설정할 수 있습니다. 이를 통해 그래프의 특정 부분을 확대하거나 축소하여 보여줄 수 있습니다.

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# 샘플 데이터 생성
x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.plot(x, y)
plt.xlim(0, 5)  # X축 범위 설정
plt.ylim(-1.5, 1.5)  # Y축 범위 설정
plt.show()

축 레이블 추가하기

축에 레이블을 추가하여 데이터의 종류나 단위를 명시할 수 있습니다. xlabel()ylabel() 함수를 사용합니다.

plt.plot(x, y)
plt.xlabel('Time')  # X축 레이블
plt.ylabel('Amplitude')  # Y축 레이블
plt.show()
 

그래프 제목과 레이블

그래프 제목 추가하기

그래프에 제목을 추가하여 어떤 데이터를 나타내는지 명시할 수 있습니다. 이는 title() 함수로 가능합니다.

plt.plot(x, y)
plt.title('Sine Wave')  # 그래프 제목 설정
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.show()

레이블 추가하기

Seaborn을 사용할 때 sns.set() 함수를 이용하여 여러 가지 스타일 설정을 한 번에 적용할 수 있고, sns.set_theme()를 통해 더 세련된 테마 설정도 가능합니다. 또한, Seaborn의 차트는 자동으로 레이블을 생성하는 경우가 많습니다. 하지만 Matplotlib의 함수들을 활용하여 레이블을 명시적으로 설정할 수도 있습니다.

Seaborn을 사용한 시각화 예제:

import seaborn as sns

# 별도 데이터 세트를 사용하여 Seaborn 예제를 보여줍니다.
tips = sns.load_dataset("tips")
sns.scatterplot(data=tips, x="total_bill", y="tip").set(title="Tip by Total Bill", xlabel="Total Bill ($)", ylabel="Tip ($)")
plt.show()

이 예시에서는 scatterplot 함수를 사용하여 레이블과 제목을 동시에 추가하는 방법을 보여줍니다. Seaborn의 set() 메소드는 그래프에 제목과 축 레이블을 추가하는 데 사용할 수 있습니다.

데이터 시각화에서 축과 레이블, 제목을 적절히 설정하는 것은 데이터의 가독성과 이해도를 크게 향상시킬 수 있으며, 데이터의 내용을 명확하게 전달하는 데 중요한 역할을 합니다.


이 섹션에서는 데이터 시각화에서 중요한 세부 기법들을 살펴보겠습니다. 간단한 Python 코드 예제를 통해 Matplotlib과 함께 seaborn을 사용하여 그래프의 스케일 조정, 범례 추가, 그리고 스타일 시트 사용 방법을 설명하겠습니다.

 

축의 스케일 조정

데이터의 범위나 패턴을 명확하게 표현하기 위해 축의 스케일을 조정할 수 있습니다. 특히, 데이터 분포가 넓거나 여러 크기의 값을 갖는 경우 유용합니다.

  • 선형 축: 데이터의 차등이 일정할 때 사용하며, 대부분의 경우 기본적으로 사용됩니다.
  • 로그 축: 데이터 범위가 매우 크고, 작은 값들 사이의 차이를 강조하고 싶을 때 사용합니다.

예제 코드

Matplotlib에서는 set_yscale 함수를 사용하여 축의 스케일을 조정할 수 있습니다. seaborn에서는 내부적으로 Matplotlib 라이브러리를 사용하기 때문에, seaborn 그래프의 축 조정도 가능합니다.

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

# Sample data
x = np.linspace(1, 10, 100)
y = np.power(x, 2)

plt.figure(figsize=(10, 6))
plt.plot(x, y)
plt.yscale('log')  # 로그 스케일 적용
plt.title('Log Scale Example')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()
 

범례 추가하기

그래프에는 여러 데이터 세트를 동시에 표현할 수 있으며, 이때 각 데이터 세트를 구분하기 위해 범례를 추가할 수 있습니다.

예제 코드

legend 함수를 사용하여 범례를 쉽게 추가할 수 있습니다. seaborn으로 그린 그래프에도 동일하게 적용됩니다.

# 데이터 생성
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 선 그래프 그리기
plt.plot(x, y1, '-b', label='sin(x)')
plt.plot(x, y2, '-r', label='cos(x)')

# 범례 추가
plt.legend(loc='upper right')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Graph with Legends')
plt.show()
 

스타일 시트

Matplotlib는 다양한 스타일 시트를 제공합니다. 이를 통해 그래프의 전체적인 스타일을 간단하게 변경할 수 있습니다.

예제 코드

Matplotlib의 스타일 시트를 설정하기 위해서는 plt.style.use() 함수를 사용합니다. 이 함수에 원하는 스타일의 이름을 문자열로 전달합니다.

# 스타일 적용
plt.style.use('seaborn-darkgrid')

# 다시 그래프 그리기
plt.figure(figsize=(10, 6))
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
plt.legend(loc='upper right')
plt.title('Styled Graph')
plt.show()

이 예제 코드들을 통해 그래프의 스케일 조정, 범례 추가, 그리고 스타일 시트 적용 방법을 살펴보았습니다. 이 기법들을 활용하면 데이터 시각화의 효과를 극대화할 수 있습니다.

Previous
데이터 시각화 소개