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

파이썬 Matplotlib 산점도 위에 선 겹쳐 그리기(오버플로팅) 방법

개요

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) 위에 그렸습니다. 산점도와 선 그래프를 하나의 축에 순차적으로 호출하면 두 요소가 자동으로 같은 좌표계에 오버플로팅되어, 데이터 분포와 추세선을 한눈에 비교할 수 있습니다.

실행 결과

파이썬 Matplotlib 산점도 위에 선 겹쳐 그리기(오버플로팅) 방법