데이터 시각화에서 두 직선이 만나는 교차점을 강조해야 하는 경우가 자주 있습니다. 이 글에서는 Matplotlib를 사용하여 두 직선의 교차점 좌표를 계산하고, 해당 지점을 지나는 수평선과 수직선을 점선으로 표시하는 방법을 단계별로 알아보겠습니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변의 여백(padding)을 조정합니다.
- 기울기(m1, m2)와 y절편(c1, c2) 값을 초기화하여 두 개의 직선을 정의합니다.
- numpy를 사용하여 x 데이터 포인트를 생성합니다.
- plot() 메서드를 사용하여 두 직선을 각각 다른 색상으로 그립니다.
- 기울기와 절편 값을 이용해 두 직선의 교차점(xi, yi)을 수학적으로 계산합니다.
- axvline()과 axhline()으로 교차점을 지나는 수직선과 수평선을 점선 스타일로 그립니다.
- scatter()로 교차점 위치에 점을 표시합니다.
- show() 메서드를 호출하여 최종 그림을 화면에 출력합니다.
예제 코드
import matplotlib.pyplot as plt import numpy as np plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True # 두 직선의 기울기와 y절편 정의 m1, c1 = 0.1, 2.0 m2, c2 = 2.0, -3.0 # x 데이터 생성 x = np.linspace(-10, 10, 500) # 두 직선 그리기 plt.plot(x, x * m1 + c1, 'red') plt.plot(x, x * m2 + c2, 'green') # 축 범위 설정 plt.xlim(-2, 8) plt.ylim(-2, 8) # 교차점 계산: m1*x + c1 = m2*x + c2 xi = (c1 - c2) / (m2 - m1) yi = m1 * xi + c1 # 교차점을 지나는 수직선과 수평선 (점선) plt.axvline(x=xi, color='gray', linestyle='--') plt.axhline(y=yi, color='gray', linestyle='--') # 교차점 표시 plt.scatter(xi, yi, color='black') plt.show()
코드 설명
교차점의 x좌표는 두 직선의 방정식을 연립하여 구할 수 있습니다. 즉, m1·x + c1 = m2·x + c2를 x에 대해 풀면 xi = (c1 - c2) / (m2 - m1)이 됩니다. 이 값을 첫 번째 직선의 방정식에 대입하면 y좌표 yi를 얻을 수 있습니다.
axvline()은 특정 x값에서 세로로 그어지는 수직선을, axhline()은 특정 y값에서 가로로 그어지는 수평선을 그리는 함수입니다. 여기서는 linestyle='--' 옵션을 사용하여 점선으로 표현했습니다.
실행 결과

실행하면 빨간색과 초록색 두 직선이 그려지고, 회색 점선으로 된 수직선과 수평선이 교차하는 지점에 검은색 점이 표시된 그래프를 확인할 수 있습니다.