데이터 시각화에서 산점도(scatter plot)에 연결선을 추가하면 데이터 포인트 간의 관계와 흐름을 한눈에 파악할 수 있습니다. Python의 seaborn 라이브러리를 사용하면 여러 계열(multiple series)로 구성된 산점도를 연결된 선과 함께 손쉽게 그릴 수 있습니다. 이 글에서는 FacetGrid를 활용해 단계별로 구현하는 방법을 소개합니다.
구현 단계
그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
Pandas 데이터프레임을 생성합니다. 데이터프레임은 2차원이며 크기가 가변적이고, 서로 다른 타입의 열을 담을 수 있는 표 형태의 자료구조입니다.
sns.FacetGrid를 사용하여 조건부 관계를 시각화하기 위한 멀티 플롯 그리드를 만듭니다.map()메서드를 통해 각 면(facet)의 데이터 하위 집합에 플로팅 함수를 적용합니다.x, y 데이터 포인트로 산점도를 그리고, 같은 좌표값으로 선 그래프를 겹쳐 그려 점들을 연결합니다.
plt.show()메서드를 호출하여 최종 그림을 화면에 표시합니다.
예제 코드
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
df = pd.DataFrame({"x": [4, 6, 7, 1, 8], "y": [1, 5, 7, 8, 1]})
g = sns.FacetGrid(df, hue="x", height=3.5)
g.map(plt.scatter, "x", "y")
g.map(plt.plot, "x", "y")
plt.show()코드 설명
위 예제에서는 x와 y 두 개의 열을 가진 간단한 데이터프레임을 생성한 후, FacetGrid에 hue="x" 옵션을 지정하여 x 값에 따라 색상이 구분되도록 설정했습니다. 이어서 g.map(plt.scatter, ...)로 산점도를 먼저 그리고, g.map(plt.plot, ...)으로 동일한 데이터에 선을 이어 붙여 점들이 연결된 형태의 그래프를 완성합니다.
실행 결과
위 코드를 실행하면 데이터 포인트가 계열별 색상으로 표시되고, 각 점이 순서대로 선으로 연결된 다중 계열 산점도가 출력됩니다.

마무리
이처럼 seaborn의 FacetGrid와 matplotlib의 scatter, plot 함수를 조합하면 복잡한 설정 없이도 연결선이 있는 다중 계열 산점도를 빠르게 만들 수 있습니다. 데이터의 개수나 계열이 많아질 경우에도 동일한 패턴을 적용하면 되므로, 시계열 데이터나 범주형 비교 분석에 유용하게 활용할 수 있습니다.