Python에서 Matplotlib 그래프 시각화 기초

Python의 Matplotlib 라이브러리는 데이터 시각화에 있어 매우 강력한 도구입니다. 특히 다양한 형태의 그래프를 손쉽게 생성할 수 있도록 도와줍니다. 이번 포스팅에서는 Matplotlib을 활용하여 막대 그래프를 그리는 방법에 대해 알아보겠습니다. 기본적인 막대 그래프에서부터 수평 막대, 그룹화된 데이터, 에러바, 누적 차트 등 다양한 그래프 스타일을 살펴보겠습니다.

Matplotlib 기본 막대 그래프 그리기

가장 먼저 기본적인 막대 그래프를 그려보겠습니다. 이를 위해서는 plt.bar() 함수를 사용합니다. 아래의 코드를 참조하여 실행해보세요.

import matplotlib.pyplot as plt
# 데이터 준비
labels = ['A', 'B', 'C', 'D']
values = [3, 7, 1, 9]
# 그래프 작성
plt.bar(labels, values)
# 제목과 축 레이블 추가
plt.title('기본 막대 그래프')
plt.xlabel('항목')
plt.ylabel('값')
# 그래프 표시
plt.show()

위의 코드에서 labels는 X축의 카테고리를 나타내며, values는 해당 카테고리에 대한 값을 설정합니다. 예제에서는 간단히 4개의 레이블과 그에 해당하는 값을 사용하였습니다.

수평 막대 그래프 그리기

이번에는 수평 막대 그래프를 그려보겠습니다. 수평 막대 그래프는 plt.barh() 함수를 사용하여 생성할 수 있습니다.

plt.barh(labels, values)

위의 함수 호출을 사용하면 X축과 Y축이 반대로 설정된 수평 막대 그래프가 그려집니다.

여러 그룹 데이터 비교하기

조금 더 복잡한 데이터 분석이 필요할 때는 여러 그룹의 데이터를 비교하는 그래프가 유용합니다. 그룹별 데이터를 생성하고, 각 그룹에 따른 그래프를 나누어 그려보겠습니다.

import pandas as pd
# 데이터 프레임 생성
data = {
  'Labels': ['A', 'A', 'B', 'B', 'C', 'C', 'D', 'D'],
  'Values': [3, 2, 7, 6, 9, 4, 5, 8],
  'Group': ['그룹 1', '그룹 2', '그룹 1', '그룹 2', '그룹 1', '그룹 2', '그룹 1', '그룹 2']
}
df = pd.DataFrame(data)
# 서브플롯 설정
count = 1
plt.figure(figsize=(9, 6))
for i in df['Group'].unique():
  df_group = df[df['Group'] == i]
  plt.subplot(2, 1, count)
  plt.bar(df_group['Labels'], df_group['Values'])
  count += 1
plt.show()

이 코드는 각 그룹의 데이터에 따라 별도의 서브플롯을 생성하여 두 개의 그래프를 나란히 보여줍니다.

여러 그룹을 하나의 그래프에 담기

여러 그룹의 데이터를 한 그래프에 담아 비교하려면 X축 위치를 조정해야 합니다. 이를 통해 동일한 레이블에 대해 서로 다른 그룹의 값을 시각적으로 비교할 수 있습니다.

value1 = df[df['Group'] == '그룹 1']['Values'].values
value2 = df[df['Group'] == '그룹 2']['Values'].values
labels = df['Labels'].unique()
x = np.arange(len(labels)) 
plt.bar(x - 0.2, value1, width=0.4, color='blue', label='그룹 1')
plt.bar(x + 0.2, value2, width=0.4, color='green', label='그룹 2')
# 레이블 추가
plt.xlabel('항목')
plt.ylabel('값')
plt.title('하나의 그래프에 두 그룹 표시')
plt.xticks(ticks=x, labels=labels)
plt.legend()
plt.show()

이 코드를 실행하면 각 그룹의 데이터가 서로 겹치지 않게 막대 그래프가 생성됩니다.

에러바 그리기 (평균, 표준편차)

데이터의 평균과 함께 표준편차를 시각적으로 나타내고 싶을 때 에러바를 추가할 수 있습니다. 이를 통해 데이터의 분산을 쉽게 파악할 수 있습니다.

df_mean = df.groupby('Group').mean()
plt.bar(df_mean.index, df_mean['Values'], yerr=df.groupby('Group').std()['Values'])

위의 코드에서 yerr 파라미터에 표준편차를 계산하여 에러바를 추가합니다.

누적 막대 차트 그리기

누적 막대 차트는 각 카테고리의 전체 합계와 구성 비율을 시각적으로 나타내기 위해 사용됩니다. 이를 통해 데이터를 보다 직관적으로 이해할 수 있습니다.

df_pivot = df.pivot(index='Labels', columns='Group', values='Values')
df_pivot.plot(kind='bar', stacked=True)

여기서 피벗 테이블을 사용하면 각 그룹을 쉽게 비교할 수 있는 누적 막대 그래프를 생성할 수 있습니다.

100% 누적 막대 차트 그리기

각 카테고리의 비율만을 강조하고자 할 때는 100% 누적 차트를 사용할 수 있습니다.

df_pivot.plot(kind='bar', stacked=True, fill=True)

위의 코드에서 fill=True를 설정하여 각 카테고리의 비율을 100%로 맞춘 누적 차트를 생성합니다.

결론

이번 포스팅에서는 Python의 Matplotlib 라이브러리를 활용하여 다양한 형태의 막대 그래프를 그리는 방법에 대해 살펴보았습니다. 데이터의 시각화는 데이터를 이해하는 데 매우 중요한 과정이며, 적절한 그래프를 선택하는 것이 중요합니다. Matplotlib을 통해 여러분의 데이터를 더욱 효과적으로 표현해 보세요.

자주 묻는 질문 FAQ

Matplotlib을 사용하면 어떤 그래프를 그릴 수 있나요?

Matplotlib을 활용하면 기본 막대 그래프는 물론, 수평 막대 그래프, 그룹화된 그래프, 에러바 및 누적 차트 등 다양한 형태의 그래프를 쉽게 생성할 수 있습니다.

막대 그래프를 어떻게 그릴 수 있나요?

막대 그래프는 plt.bar() 함수를 이용하여 만들 수 있습니다. 데이터와 레이블을 제공하면 간단히 시각화할 수 있습니다.

수평 막대 그래프는 어떻게 만들죠?

수평 막대 그래프는 plt.barh() 함수를 사용하여 쉽게 생성할 수 있으며, X축과 Y축의 위치가 서로 바뀝니다.

그룹별 데이터를 비교하려면 어떻게 해야 하나요?

여러 그룹의 데이터를 비교하고자 할 때는 서브플롯을 활용하여 각각의 그래프를 나누어 그리는 방법이 매우 유용합니다.

에러바를 추가하는 목적은 무엇인가요?

에러바는 데이터의 평균이나 표준편차를 시각적으로 표시하는 데 사용되며, 데이터의 변동성을 쉽게 이해하는 데 도움을 줍니다.

Tags: No tags

Add a Comment

Your email address will not be published. Required fields are marked *