Matplotlib의 scatter() 또는 plot() 함수를 사용해 3D 산점도(3D scatterplot)에 범례를 추가하려면 다음 단계를 따르면 됩니다.
구현 단계
figure 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
샘플 데이터의 개수를 저장할 변수 N을 초기화합니다.
난수를 이용해 x, y 데이터 포인트를 생성하고, 이를 조합하여 z1(곱셈)과 z2(덧셈) 데이터 리스트를 만듭니다.
projection='3d' 옵션을 지정하여 현재 figure에 3D 축의 서브플롯을 추가합니다.
plot() 메서드로 x, y, z1 데이터를 마커 * 형태로 그리고, 범례에 표시될 label을 지정합니다.
같은 방식으로 x, y, z2 데이터를 마커 o 형태로 그리고 label을 지정합니다.
legend() 메서드를 호출해 figure에 범례를 배치합니다.
show() 메서드를 사용해 figure를 화면에 표시합니다.
예제 코드
import matplotlib.pyplot as plt import numpy as np plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True N = 100 x = np.random.rand(N) y = np.random.rand(N) z1 = [i*j for (i, j) in zip(x, y)] z2 = [i+j for (i, j) in zip(x, y)] axes = plt.subplot(111, projection='3d') axes.plot(x, y, z1, "*", label="xy") axes.plot(x, y, z2, "o", label="x+y") plt.legend(loc="upper right") plt.show()
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

핵심 포인트 정리
3D 산점도에 범례를 추가하는 핵심은 각 데이터 시리즈를 그릴 때 label 인자를 함께 지정하는 것입니다. 라벨이 설정된 상태에서 plt.legend()를 호출하면, loc 인자로 범례 위치(예: "upper right")를 자유롭게 조절할 수 있습니다. 이 방법은 scatter()뿐만 아니라 plot()으로 그린 3D 그래프에도 동일하게 적용되므로, 여러 데이터 세트를 한 화면에서 구분할 때 매우 유용합니다.