목차
파이썬의 matplotlib 라이브러리에서는 그래프의 직선을 나타내는 함수를 제공합니다. 이를 이용해서 수평선과 수직선을 그래프 창에 표시를 할 수 있습니다. matplotlib에서 제공하는 함수는 수평선을 위한 함수 2개와 수직선을 그리기 위한 함수 2개가 존재합니다. 이번 글에서는 각 함수가 구현하는 방식에 대해서 설명을 해 보려고 합니다. 같은 수평선이나 수직선을 그린다고 하더라도 함수의 사용에 따라 그 결과가 달라지니 내용을 잘 확인해 보시고 필요에 따라 구분하여 사용하길 바랍니다.
1 수평선과 수직선을 그리는 함수들
그래프의 특정 위치 값이 주어질 때 수직선과 수평선을 표시하기 위해 matplotlib.pyplot 모듈은 네 개의 함수를 지원합니다. 네 개의 함수 중 축(axes)을 의미하는 'ax'가 붙은 함수는 축을 따라서 직선을 표시한다는 의미입니다. 'ax'가 붙지 않을 경우에는 'lines'와 같이 'line'뒤에 's'를 붙여서 사용합니다.
축을 따라 수직 / 수평선을 표시하는 함수
- axhilne() : 축을 따라 수평선을 표시
- axvline() : 축을 따라 수직선을 표시
지정된 값에 의해 수직 / 수평선을 표시
- hlines() : 지정된 점 사이의 수평선을 표시
- vlines() : 지정한 점 사이의 수직선 표시
2 axvline, axhline 함수
'ax'가 함수 앞에 붙으면 축을 따라 직선을 그리는 함수라고 했습니다. 'ax'가 붙은 axvline과 axhline 함수의 사용은 다음과 같습니다.
plt.axhline(y=0, xmin=0, xmax=1, **kwargs)
plt.axvline(x=0, ymin=0, ymax=1, **kwargs)
y, x : 수평선이 그려질 y 또는 x값입니다.
xmin/ymin (선택적): 선의 시작 x값을 정합니다. 기본값은 0입니다.
xmax/ymax (선택적): 선의 끝 x값을 정합니다. 기본값은 1입니다.
**kwargs: 추가적인 키워드 인수들로 선의 스타일, 색상 등을 설정할 수 있습니다.
두 함수의 사용법이 같기 때문에 axhline 함수 하나에 대해서만 설명하겠습니다. 해당 함수에서는 'y'값은 필수로 들어가야 합니다. 수평선을 그리는 것이기 때문에 수평선의 위치인 'y'값을 넣어야 합니다.
xmin과 xmax의 값은 0에서 1 사이의 값을 넣습니다. 이 값은 실제의 좌표값이 아닌 여백을 의미합니다. xmin은 왼쪽, xmax는 오른쪽의 여백의 값을 받습니다. 만일 두 값을 넣지 않으면 여백 없이 수평선을 그릴 것이고 xmin에 0.1을 넣으면 왼쪽 부분을 10% 띄운 후 그리게 됩니다. 아래 예제 코드를 확인해 보시면 금방 이해가 될 겁니다.
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 4, 0.5)
plt.plot(x, x + 1, 'bo')
plt.plot(x, x**2 -4*x + 4, 'g--')
plt.plot(x, 2*x - 2, 'r:')
plt.axhline(4.0, 0.1, 0.9, color='b', linestyle='--', linewidth=2)
plt.axhline(0.0, color='r', linestyle='--', linewidth=2)
plt.show()
첫 번째 수평선(파란 점선)의 min / max 값으로 각각 0.1과 0.9를 넣어줬습니다. 이는 왼쪽으로 10%, 오른쪽으로 10%의 여백을 남기겠다는 뜻입니다. 두 번째 수평선(빨간 점선)은 y값만 사용했는데도 나타납니다. 이는 min / max 값이 자동으로 0과 1이 들어갔음을 의미합니다.
3 vlines, hlines 함수
'ax'가 붙지 않을 때는 'lines'와 같이 's'를 붙여야 합니다. 축의 의미가 없는 이 두 함수는 min / max 값을 꼭 넣어야 합니다. axvline 함수는 min / max 값을 넣지 않아도 되는 것과 다르니 주의해야 합니다.
vlines(x, ymin, ymax, colors='k', linestyles='solid', label='', **kwargs)
hlines(y, xmin, xmax, colors='k', linestyles='solid', label='', **kwargs)
x, y: 수직선이 그려질 x/y 좌표 또는 x/y 좌표들을 담은 리스트나 배열입니다.
ymin/xmin: 선의 시작 y/x값을 정합니다.
ymax/ymax: 선의 끝 y/x값을 정합니다.
colors: 선의 색상을 지정합니다. 기본값은 'k'로 검은색입니다.
linestyles: 선의 스타일을 지정합니다. 기본값은 'solid'로 실선입니다.
label: 레이블을 지정하여 범례에 표시될 내용을 설정합니다.
**kwargs: 추가적인 키워드 인수들로 선의 스타일, 색상 등을 설정할 수 있습니다.
hlines 함수는 수평선을 그리는 함수로 x의 min 값과 max 값을 꼭 넣어줘야 합니다. 예제 코드를 통해 값을 넣었을 때의 모습을 확인하시기 바랍니다.
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 4, 0.5)
plt.plot(x, x + 1, 'bo')
plt.plot(x, x**2 -4*x + 4, 'g--')
plt.plot(x, 2*x - 2, 'r:')
plt.hlines(4.0, 0.1, 0.9, color='b', linestyle='--', linewidth=2)
plt.hlines(0.0, 0.5, 3.5, color='r', linestyle='--', linewidth=2)
plt.show()
hlines은 무조건 min / max 값을 넣어야 합니다. axhline과는 달리 min / max 값은 수평선이 그려질 처음 위치와 끝 위치를 의미합니다. 첫 번째 수평선은 0.1~0.9의 길이를 갖고, 두 번째 수평선은 0.5~3.5의 길이를 갖게 됩니다.
4 마치며
파이썬의 matplotlib.pyplot 모듈의 함수 중에 수평선과 수직선을 그리는 함수들에 대해서 정리해 봤습니다. 각 함수의 사용방법이 비슷해 보이긴 하지만 그 내용에 차이가 있으니 이번 글의 내용을 숙지하셔서 잘 활용할 수 있었으면 합니다.