Matplotlib에서 그룹화된 막대 그래프(bar plot) 사이의 간격을 설정하려면 다음 단계를 따르면 됩니다.
- 그림(figure) 크기를 설정하고, 서브플롯(subplot) 주변과 사이의 여백(padding)을 조정합니다.
- 그래프에 사용할 막대 데이터를 담은 딕셔너리(dictionary)를 생성합니다.
- 딕셔너리 d를 이용해 Pandas 데이터프레임(DataFrame)을 만듭니다.
- 딕셔너리 d로 align="center" 옵션과 함께 막대 그래프를 그립니다.
- 그림을 화면에 표시하려면 show() 메서드를 호출합니다.
여기서 핵심은 width 매개변수입니다. 막대의 너비 값을 작게 지정할수록 같은 그룹 내 막대들 사이의 간격이 넓어지고, 반대로 값을 크게 하면 막대들이 서로 붙게 됩니다. 아래 예제에서는 width를 0.1로 설정하여 각 막대 사이에 충분한 간격을 확보했습니다.
예제 코드
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
d = {"Name": ["John", "Jacks", "James", "Joe"], "Age": [23, 12, 30, 26], "Marks": [98, 85, 70, 77]}
df = pd.DataFrame(d)
df.set_index('Name').plot(kind="bar", align='center', width=0.1)
plt.tick_params(rotation=45)
plt.show()실행 결과
위 코드를 실행하면 이름(Name)별로 나이(Age)와 점수(Marks) 두 개의 막대가 그룹으로 묶여 표시되며, width=0.1 덕분에 각 막대 사이에 적절한 간격이 유지되는 것을 확인할 수 있습니다. x축 라벨은 tick_params(rotation=45) 설정으로 45도 회전되어 가독성이 향상됩니다.
만약 그룹 자체 사이의 간격을 더 넓히고 싶다면, x축 위치를 직접 지정하는 방식으로 각 그룹의 중심 좌표에 여유를 두거나, 막대 너비(width)와 그룹 배치를 함께 조정하면 됩니다. 이처럼 align과 width 옵션을 적절히 조합하면 그룹화된 막대 그래프의 시각적 균형을 손쉽게 제어할 수 있습니다.