Matplotlib 범례를 2개의 열로 정렬하기
Matplotlib에서 범례(legend) 항목이 많아질 경우, 항목들이 세로로 길게 나열되면 그래프 영역을 많이 차지하게 됩니다. 이럴 때 legend() 함수의 ncol 매개변수를 사용하면 범례 항목을 여러 개의 열로 나누어 깔끔하게 배치할 수 있습니다.
범례의 행을 두 개의 열로 정렬하려면 아래 단계를 따르면 됩니다.
1단계: 그림 크기 설정 및 패딩 조정
rcParams를 사용해 figure 크기를 지정하고, figure.autolayout 옵션을 활성화하여 서브플롯 사이와 주변의 패딩을 자동으로 조정합니다.
2단계: 레이블이 있는 선 그리기
plot() 메서드를 사용하여 각각 line1, line2, line3 레이블을 가진 세 개의 선을 그립니다.
3단계: 두 개의 열로 범례 배치
legend() 메서드에 ncol=2 옵션을 지정하여 범례가 두 개의 열로 표시되도록 설정합니다. 필요에 따라 loc 매개변수로 범례의 위치도 지정할 수 있습니다.
4단계: 그림 출력
show() 메서드를 호출하여 결과 그림을 화면에 표시합니다.
예제 코드
from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True plt.plot([1, 2, 3], label="line1") plt.plot([3, 2, 1], label="line2") plt.plot([2, 3, 1], label="line3") plt.legend(ncol=2, loc="upper right") plt.show()
실행 결과
위 코드를 실행하면 세 개의 선이 그려지고, 오른쪽 상단에 범례 항목이 두 개의 열로 나뉘어 배치된 것을 확인할 수 있습니다.

추가 팁
ncol 값은 원하는 열의 개수만큼 자유롭게 조정할 수 있습니다. 예를 들어 ncol=3으로 설정하면 범례가 세 개의 열로 표시됩니다. 또한 loc 매개변수에는 "upper right", "lower left", "center" 등 다양한 위치 값을 지정할 수 있으며, 그래프 밖에 범례를 배치하고 싶다면 bbox_to_anchor 매개변수를 함께 활용하면 됩니다.