개요
데이터 시각화에서 두 점을 연결할 때 단순한 직선보다 부드러운 곡선을 사용하면 더 자연스럽고 세련된 그래프를 만들 수 있습니다. 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) 두 점이 원형 마커로 표시되고, 이 두 점을 부드럽게 연결하는 곡선이 함께 출력됩니다.