본문 바로가기
Python/python 응용: 수학 및 과학

Python matplotlib 그래프 그리기

by 철이88 2022. 12. 7.
반응형

Matplotlib은 python에서 수학적 그래프를 그릴 수 있는 외부 라이브러리입니다. 이번 포스팅에서는 matplotlib의 pyplot을 사용해서 그래프를 그려보겠습니다. 

1. Matplotlib.pyplot으로 기본적인 2차원 그래프 그리기


먼저 다음 예로 시작하겠습니다.

import matplotlib.pyplot as plt
plt.plot([1, 3, 5, 7])
plt.xlabel("X axis")
plt.ylabel("Y axis")
plt.show()

위 코드의 첫 줄은 matplotlib.pyplot을 plt라는 이름으로 import 합니다.
두 번째 줄의 plot()은 pyplot에서 그래프를 그려주는 함수입니다.


plot()의 괄호 안에는 리스트 데이터를 입력하는데, 위 예처럼 리스트가 한 개인 경우는 리스트의 원소들이 xy좌표에서 y값이 됩니다. 이때 x값은 0, 1, 2, … 과 같이 입력된 리스트의 원소 개수에 맞춰 자동으로 만들어집니다.
따라서 위의 예는 점 (0, 1), (1, 3), (2, 5), (3, 7)들을 연결하는 선들을 그려줍니다.
show() 함수는 plot()이 그린 그래프를 화면에 보여줍니다.

또한 xlabel(), ylabel() 들은 각각 그래프에 x, y축의 레이블을 써주는 함수입니다.

matplotlib-graph


만약 x값을 자동으로 만드는 대신 원하는 값을 입력하려면 다음과 같이 위 코드의 두 번째 줄에 리스트를 추가해줍니다.

plt.plot([1, 2, 3, 4], [1, 3, 5, 7])

이때 첫 번째 리스트가 x좌표값, 두 번째가 y좌표값이 됩니다. 

이제 실행하고 출력하면 다음과 같이 x좌표값들이 바뀐 것을 볼 수 있습니다.

matplotlib-graph2

 

2. pyplot axis(), xlim(), ylim()함수로 x, y축의 범위 정하기


위 예들의 그래프들을 보면 x, y축의 범위가 입력된 좌표 값들이라는 것을 알 수 있습니다. 만약 원하는 x, y축의 범위를 그리고 싶다면 axis() 함수를 이용합니다.
위 예에 다음과 같이 axis()함수를 추가하면 그려지는 축의 범위를 정할 수 있습니다.

import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 3, 5, 7])
plt.axis([0, 5, 0, 10]) #축의 범위: [xmin, xmax, ymin, ymax]
plt.xlabel("X axis")
plt.ylabel("Y axis")
plt.show()

또한 xlim(), ylim() 함수들은 각각 x축, y축의 범위를 정해줍니다.
다음 코드는 위와 동일한 결과를 출력합니다.

import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 3, 5, 7])
plt.xlim([0, 5])
plt.ylim([0, 10])
plt.xlabel("X axis")
plt.ylabel("Y axis")
plt.show()



3. plot() 함수에서 선스타일과 마커 설정하기


plot() 함수는 선의 스타일(색과 대시)을 조정할 수 있고 점(마커)을 그려줄 수도 있습니다.
위 예에서 plot()함수가 있는 줄을 다음과 같이 수정하겠습니다.

plt.plot([1, 2, 3, 4], [1, 3, 5, 7], '--', color='blue')

또는

plt.plot([1, 2, 3, 4], [1, 3, 5, 7], linestyle='dashed', color='blue')

실행해 보면 아래와 같이 선이 파란색 파선(dashed line)으로 바뀐 것을 볼 수 있습니다.

matplotlib-graph3

 
다음표는 선택할 수 있는 선 스타일입니다.

pyplot-line-styles

그리고 다음과 같이 마커를 설정하면 입력된 좌표에 점을 찍어줍니다.

plt.plot([1, 2, 3, 4], [1, 3, 5, 7], linestyle='dashed', marker='o', color='blue')

또는 

plt.plot([1, 2, 3, 4], [1, 3, 5, 7], 'bo--')

실행하면 아래와 같은 그래프를 그립니다.

matplotlib-graph4

다음표는 사용할 수 있는 마커들입니다.

pyplot-markers

4. set_dashes() 메소드로 선 스타일 커스터마이징 하기


위에서 본 것과 같이 plot()함수는 4가지 선 스타일을 제공합니다. 
만약 원하는 선 스타일을 만들려면 set_dashes() 메소드를 이용할 수 있습니다.
다음 예를 보시기 바랍니다.

import matplotlib.pyplot as plt
line, = plt.plot([1, 2, 3, 4], [1, 3, 5, 7], linestyle='solid', color='blue')
line.set_dashes([2, 2, 10, 2]) # 선 2pt, 공간 2pt, 선 10pt, 공간 2pt
plt.xlim([0, 5])
plt.ylim([0, 10])
plt.xlabel("X axis")
plt.ylabel("Y axis")
plt.show()

위 예시를 그려보면 아래와 같은 그림을 출력합니다.

pyplot-dashes


 

반응형

댓글