본문 바로가기
파이썬 독학

파이썬 Matplotlib 사용법 가이드

by 데싸루나 2023. 2. 19.

Matplotlib은 파이썬에서 그래프와 차트 등의 시각화 자료를 그리는 것을 쉽게 할 수 있도록 도와주는 라이브러리입니다. Matplotlib 설치방법과 Line Plot, Bar Plot, Scatter Plot, Histogram, Pie Chart, Area Chart 그리는 방법을 코드와 함께 알아보겠습니다. 

 

Matplotlib 다양한 차트 그리기
Matplotlib 다양한 차트 그리기

 

Matplotlib 설치하기

Matplotlib을 설치하지 않으신 분들은 커맨드 창에서 아래 pip 커맨드로 matplotlib을 설치하실 수 있습니다. 

pip install matplotlib

아나콘다나 구글코랩을 사용하시는 경우는 사전에 이미 설치되어있으므로 바로 사용하실 수 있습니다. 

설치되었는지 확인은 다음 코드를 실행해서 Matplotlib의 버젼을 확인해 봄으로써 할 수 있습니다.

import matplotlib
print(matplotlib.__version__)

 

 

Matplotlib 시작하기

Plot 종류별로 그려보기

Matplotlib은 다양한 종류의 Plot(그래프, 차트) 시각화를 지원합니다. 이 포스팅에서는 다음 종류의 그래프(차트) 그리는 방법에 대해서 알아보겠습니다.

  • line plot
  • scatter plot
  • bar plot
  • histogram
  • pie chart
  • area plot

 

Line Graph

matplotlib에 간단한 그래프를 그려보겠습니다. 아래 코드는 pyplot모듈을 이용하여 [0,10] 사이에 sine 함수를 그려보는 코드입니다. plt.plot() 함수는 x축과 y축값을 argument로 받아 그래프를 그립니다.

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()

line 그래프
Matplotlib으로 그린 sine 함수 그래프

 

Matplotlib은 사용자가 색깔이나, 라인 스타일, 마커 스타일 등을 바꿀 수 있도록 지원합니다. 다음 코드는 위에서 그려본 코드를 색상, 선스타일, 마커 등을 바꿔보는 예시입니다. 

plt.plot(x, y, color='red', linestyle='dashed', marker='o', label='sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Sine function')
plt.legend()
plt.show()

Matplotlib-line그래프-스타일입히기
Matplotlib 색상, 스타일 변경한 예시

 

 

Scatter Plot(산점도) 그리기

Scatter Plot(산점도)는 두개 이상 변수의 분산도를 보기 위한 차트입니다. plt.scatter() 함수를 이용해 기본적인 Scatter Plot을 그려볼 수 있습니다. 

import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(100)
y = np.random.randn(100)

plt.scatter(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Scatter plot')
plt.show()

위의 코드는 다음과 같은 Scatter Plot을 그립니다. 

Matplotlib - Scatter Plot
Matplotlib - Scatter Plot

Bar Plot(Bar 그래프)

Bar plot은 Bar를 이용하여 두개 이상의 변수의 관계를 나타낸 그래프입니다. plt.bar() 함수를 이용하여 바 그래프를 그려볼 수 있습니다. 

import matplotlib.pyplot as plt
import numpy as np

x = np.array(['A', 'B', 'C', 'D', 'E'])
y = np.random.randint(1, 10, size=5)

plt.bar(x, y)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar plot')
plt.show()

위의 코드는 아래와 같은 Bar Plot을 그립니다.

Matplotlib - Bar plot
Matplotlib - Bar plot

 

 

Histogram(히스토그램)

히스토그램은 데이터의 분포를 볼 수 있는 차트입니다. plt.hist()함수를 이용하여 히스토그램을 그려볼 수 있습니다. 다음의 코드는 랜덤한 숫자를 이용하여 히스토그램을 그려보는 예시입니다. 

import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(1000)

plt.hist(x, bins=30)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()

위의 코드는 아래의 히스토그램을 그려냅니다. 

Matplotlib - Histogram
Matplotlib - Histogram

Pie Chart(파이차트)

파이차트는 데이터의 구성비율을 효과적으로 그려낼 수 있는 그래프입니다. plt.pie()함수를 이용하여 그릴 수 있습니다. 다음 코드는 랜덤한 숫자를 이용해 파이차트를 그려보는 예시입니다. 

 

import matplotlib.pyplot as plt
import numpy as np

labels = ['A', 'B', 'C', 'D', 'E']
sizes = np.random.randint(1, 10, size=5)

plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.axis('equal')
plt.title('Pie chart')
plt.show()

위의 코드는 아래와 같은 파이차트를 그려냅니다. 

Matplotlib-Pie Chart
Matplotlib-Pie Chart

 

 

Area Plot (면적 그래프)

Area Plot은 선과 선이 이어져 면적을 이루는 부분을 표시하기 위한 그래프로 fill_between() 함수를 이용해 색상을 채워 표현할 수 있습니다. 

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.fill_between(x, y1, y2, color='blue', alpha=0.2)
plt.plot(x, y1, color='blue')
plt.plot(x, y2, color='red')
plt.title('Area Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

위의 코드는 아래와 같은 Area Plot을 그려냅니다.

Matplotlib-Area Plot
Matplotlib-Area Plot

그래프 이미지 파일로 저장하기

Matplotlib은 그래프, 차트 그려진 것을 이미지 파일로 다운로드할 수 있도록 지원합니다. 다음 코드를 이용하여 PNG형태의 이미지로 저장할 수 있습니다. Matplotlib은 PNG 뿐만 아니라 PDF, SVG 등 다양한 확장자 파일을 지원합니다. 

 

plt.plot(x, y, color='red', linestyle='dashed', marker='o', label='sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Sine function')
plt.legend()
plt.savefig('plot.png')

 

Summary

Matplotlib을 활용하면 데이터 분석을 시각화(Visualization)함으로써 분석 효과를 더욱 극대화할 수 있습니다. 이번 포스팅에서 다루었던 Line Plot, Bar Plot, Histogram, Scatter Plot, Pie Chart, Area Plot만 이용해도 정말 다양한 종류의 그래프를 그릴 수 있습니다. 위의 예제들을 활용하여 사용방법이 정말 간편한 Matplotlib을 적극 이용하는 것을 추천드립니다. 

 

<참고하면 좋은 포스팅>

 

 

[챗gpt 활용팁] chatgpt로 차트, 다이어그램 그리는 방법

챗gpt는 챗봇 서비스이기 때문에 텍스트 형태의 답변만 제공이 가능합니다. 하지만 챗gpt를 이용해 차트나 다이어그램을 그릴 수 있는 방법이 있습니다. 챗gpt에게 차트나 다이어그램을 그려달라

datasciencediary.tistory.com

 

댓글