Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib에서 두 직선의 교차점을 지나는 수평선과 수직선 그리기

데이터 시각화에서 두 직선이 만나는 교차점을 강조해야 하는 경우가 자주 있습니다. 이 글에서는 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='--' 옵션을 사용하여 점선으로 표현했습니다.

실행 결과

Matplotlib에서 두 직선의 교차점을 지나는 수평선과 수직선 그리기

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