본문 바로가기
Engineering with Python

파이썬 Matplotlib 기본

by Hunger 2023. 1. 8.
반응형

1. Matplotlib

Matplotlib은 데이터의 시각화와 평면 그래프 플롯으로 사용되는 파이썬 라이브러리입니다. Matplotlib를 이용하면 꺾은선, 막대 그래프, 히스토그램 등의 다양한 유형의 그래프를 표현할 수 있으며 데이터 곡선, 눈금, 범례, 그래프 제목과 같이 그래프를 라벨링할 수도 있습니다.

2. Pyplot 모듈

matplotlib.pyplot 모듈은 MATLAB과 유사하게 명령어 스타일로 동작하는 함수입니다. matplotlib.pyplot 모듈의 함수를 이용해 그래프를 만들 수 있습니다.

1) 그래프 그리기

matplotlib.pyplot 모듈의 plot() 함수 안에 숫자 리스트를 입력해 그래프를 그릴 수 있습니다. plot() 함수 안에 리스트를 하나만 넣을 경우에는 plot() 함수는 리스트의 값을 y값이라고 가정하고, 리스트 안 데이터의 개수만큼 스스로 x값 데이터 리스트 [0, 1, 2, 3...]을 만들어냅니다.
matplotlib.pyplot 모듈의 show() 함수는 그래프를 화면에 나타나도록 합니다.
Code

import matplotlib.pyplot as plt

plt.plot([0, 1, 2, 3])
plt.show()

만약 plot() 함수 안에 두 개의 리스트를 넣는다면, 첫 번째 리스트의 값은 x축 값으로, 두 번째 리스트의 값들은 y축 값으로 인식하여 x-y 그래프로 나타낼 수 있습니다.
Code

import matplotlib.pyplot as plt

plt.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16])
plt.show()

[ConFer]
plot() 함수는 다양한 기능을 포함하고 있어, 임의의 개수의 인자를 받을 수 있습니다.

2) 스타일 지정하기

스타일 설정하기 형식

plt.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16], 'ro')
plt.axis([xmin, xmax, ymin, ymax])

[ConFer]
위 코드에서 'ro'는 Format string을 의미합니다.

Code

import matplotlib.pyplot as plt
plt.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16], 'ro')
plt.axis([0, 6, 0, 20])
plt.show()

[ConFer]
위 코드에서 'ro'는 Format string을 의미합니다. 포맷 문자열은 x, y 값 인자에 대해 선의 색상과 형태를 지정하는 값으로 세번 째 인자에 이 값을 추가하여 속성을 추가할 수 있습니다.
포맷 문자열 'ro'에서 'r'은 빨간색을, 'o'는 원형 점을 의미합니다.
이 외에도 'b-'에서 'b'는 파란색을, '-'은 실선을 의미합니다.

또한 matplotlib.pyplot 모듈의 axis() 함수를 이용해 축의 범위 [xmin, xmax, ymin, ymax]를 지정할 수 있습니다.

3) 동시에 여러 그래프 그리기

여러 그래프 그리기 형식

plt.plot(x, y1, 'r--', x, y2, 'bs', x, y3, 'g^')

Code

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 5., 0.2)

plt.plot(x, x, 'r--', x, x**2, 'bs', x, x**3, 'g^')
plt.show()

Matplotlib에서는 일반적으로 NumPy 어레이를 사용합니다. 하지만 NumPy 어레이를 사용하지 않아도 모든 시퀀스는 내부에서는 NumPy 어레이로 변환되어 처리됩니다.

[ConFer]
위 코드에서 np.arange(0, 5, 0.2)는 0부터 5까지 0.2의 크기로 나누어진 값을 의미합니다. 또한 'r--'는 빨간색 대쉬 라인을, 'bs'은 파란 사각형을, 'g^'은 녹색 삼각형으로 위 값의 점을 나타냅니다.

반응형

'Engineering with Python' 카테고리의 다른 글

Scipy란?  (0) 2023.01.10

댓글