Matplotlib에서 3D 막대 그래프에 범례를 추가하려면 bar3d() 메서드로 3D 막대를 먼저 그린 뒤, legend() 메서드를 사용해 범례를 배치하면 됩니다. 이 글에서는 두 가지 색상의 3D 막대에 각각 범례를 지정하는 과정을 단계별로 살펴보겠습니다.
구현 단계
- 그림 크기를 설정하고 서브플롯 주변과 사이의 여백을 조정합니다.
- figure() 메서드를 사용해 새로운 그림을 생성하거나 기존 그림을 활성화합니다.
- 서브플롯 배열의 일부로 축(axes)을 그림에 추가합니다.
- numpy를 사용해 x3, y3, z3, dx, dy, dz 데이터 리스트를 생성합니다.
- bar3d() 메서드로 3D 막대를 그립니다.
- 범례를 배치하기 위한 사각형(Rectangle) 객체를 생성합니다.
- legend() 메서드로 막대에 대한 범례를 표시합니다.
- show() 메서드로 그림을 화면에 출력합니다.
예제 코드
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True fig = plt.figure() ax1 = fig.add_subplot(111, projection='3d') x3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y3 = [5, 6, 7, 8, 2, 5, 6, 3, 7, 2] z3 = np.zeros(10) dx = np.ones(10) dy = np.ones(10) dz = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ax1.bar3d(x3, y3, z3, dx, dy, dz, color="green") b1 = plt.Rectangle((0, 0), 1, 1, fc="green") ax1.bar3d(y3, x3, z3, dx, dy, dz, color="red") b2 = plt.Rectangle((0, 0), 1, 1, fc="red") ax1.legend([b1, b2], ['type1', 'type2']) plt.show()
코드 설명
위 예제에서는 초록색과 빨간색으로 각각 다른 데이터(x3, y3의 순서를 바꿔)로 3D 막대를 두 번 그립니다. bar3d() 메서드 자체는 범례 핸들을 직접 반환하지 않기 때문에, plt.Rectangle을 사용해 각 색상에 해당하는 패치(patch) 객체를 만들고, 이를 legend() 메서드에 전달하여 'type1'과 'type2'라는 이름의 범례를 표시합니다.
출력 결과

실행하면 초록색과 빨간색 3D 막대가 함께 표시되고, 그래프 오른쪽 상단에 'type1'(초록), 'type2'(빨강) 범례가 나타나는 것을 확인할 수 있습니다.