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

Matplotlib에서 직선 대신 곡선으로 두 점을 연결하는 방법

개요

데이터 시각화에서 두 점을 연결할 때 단순한 직선보다 부드러운 곡선을 사용하면 더 자연스럽고 세련된 그래프를 만들 수 있습니다. Matplotlib에서는 쌍곡선 코사인(hyperbolic cosine) 함수를 활용해 두 점 사이를 잇는 곡선을 손쉽게 그릴 수 있습니다.

이번 튜토리얼에서는 직선 대신 곡선으로 두 점을 연결하는 방법을 단계별로 살펴보겠습니다.

구현 단계

  • 그림 크기를 설정하고 서브플롯 주변 및 사이의 여백을 조정합니다.
  • 수학적 표현식을 기반으로 곡선을 생성하는 draw_curve() 메서드를 정의합니다.
  • point1과 point2 데이터 포인트를 플롯합니다.
  • draw_curve() 메서드에서 반환된 x, y 데이터를 플롯합니다.
  • 그림을 화면에 표시하려면 show() 메서드를 사용합니다.

예제 코드

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

def draw_curve(p1, p2):
   a = (p2[1] - p1[1]) / (np.cosh(p2[0]) - np.cosh(p1[0]))
   b = p1[1] - a * np.cosh(p1[0])
   x = np.linspace(p1[0], p2[0], 100)
   y = a * np.cosh(x) + b
   return x, y

p1 = [0, 1]
p2 = [1, 2]
x, y = draw_curve(p1, p2)
plt.plot(p1[0], p1[1], 'o')
plt.plot(p2[0], p2[1], 'o')
plt.plot(x, y)
plt.show()

코드 설명

draw_curve() 함수는 두 점을 지나는 쌍곡선 코사인 곡선의 계수 a와 상수항 b를 계산합니다. 이후 np.linspace()로 시작점과 끝점 사이를 100개 구간으로 나눈 x값을 만들고, 각 x에 대응하는 y값을 산출하여 곡선을 완성합니다.

실행 결과

위 코드를 실행하면 (0, 1)과 (1, 2) 두 점이 원형 마커로 표시되고, 이 두 점을 부드럽게 연결하는 곡선이 함께 출력됩니다.