개요
Python의 matplotlib에서는 먼저 scatter() 메서드를 사용해 여러 데이터 포인트의 산점도(scatter plot)를 생성한 후, plot() 메서드를 사용해 그 위에 선(line)을 겹쳐 그릴 수 있습니다. 이처럼 기존 그래프 위에 추가 요소를 덧그리는 것을 '오버플로팅(overplotting)'이라고 하며, 데이터 분포와 추세선 또는 기준선을 시각적으로 비교할 때 매우 유용합니다.
구현 단계
figure()메서드를 사용해 크기가 (4, 3)인 새 그림(figure)을 생성하거나 기존 그림을 활성화합니다.plt.axes()를 사용해 현재 그림에 축(axis)을 추가하고, 해당 축을 현재 작업 대상으로 지정합니다.scatter()메서드를 사용해 산점도 데이터 포인트를 그립니다.ax.plot()메서드를 사용해 같은 좌표계 위에 선을 그립니다.plt.xlabel()메서드로 X축 레이블을 설정합니다.plt.ylabel()메서드로 Y축 레이블을 설정합니다.plt.show()메서드를 호출해 최종 그래프를 화면에 표시합니다.
예제 코드
import random
import matplotlib.pyplot as plt
plt.figure(figsize=(4, 3))
ax = plt.axes()
ax.scatter([random.randint(1, 1000) % 50 for i in range(100)],
[random.randint(1, 1000) % 50 for i in range(100)])
ax.plot([1, 2, 4, 50], [1, 2, 4, 50])
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.show()코드 설명
위 예제에서는 random.randint(1, 1000) % 50을 통해 0부터 49 사이의 난수 100개를 x, y 좌표로 각각 생성하여 무작위 산점도를 구성했습니다. 이후 ax.plot([1, 2, 4, 50], [1, 2, 4, 50])으로 y = x에 해당하는 직선을 동일한 축 객체(ax) 위에 그렸습니다. 산점도와 선 그래프를 하나의 축에 순차적으로 호출하면 두 요소가 자동으로 같은 좌표계에 오버플로팅되어, 데이터 분포와 추세선을 한눈에 비교할 수 있습니다.
실행 결과
