Seaborn을 사용하여 여러 개의 그래프를 한 번에 그리려면 Matplotlib의 서브플롯(subplot) 기능을 활용할 수 있습니다.
Seaborn은 Matplotlib를 기반으로 하기 때문에, Matplotlib의 서브플롯을 사용하여 여러 개의 그래프를 한 번에 출력할 수 있습니다.
아래 예제는 Seaborn을 사용하여 여러 개의 그래프를 한 번에 그리는 방법을 보여줍니다.
Matplotlib의 서브플롯 (subplot)
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 샘플 데이터프레임 생성
data = {'Year': [2010, 2011, 2012, 2013, 2014],
'Sales': [500, 800, 1200, 900, 1500],
'Expenses': [300, 400, 600, 500, 800]}
df = pd.DataFrame(data)
# 서브플롯 생성
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
# 선 그래프
sns.lineplot(data=df, x='Year', y='Sales', ax=axes[0, 0])
axes[0, 0].set_title('Sales')
# 막대 그래프
sns.barplot(data=df, x='Year', y='Expenses', ax=axes[0, 1])
axes[0, 1].set_title('Expenses')
# 산점도
sns.scatterplot(data=df, x='Sales', y='Expenses', ax=axes[1, 0])
axes[1, 0].set_title('Sales vs. Expenses')
# 히스토그램
sns.histplot(data=df, x='Sales', ax=axes[1, 1])
axes[1, 1].set_title('Sales Distribution')
# 그래프 간 간격 조정
plt.tight_layout()
# 그래프 출력
plt.show()
위의 예제에서는 Matplotlib의 subplots()
함수를 사용하여 2×2 서브플롯을 생성합니다.
그리고 sns.lineplot()
, sns.barplot()
, sns.scatterplot()
, sns.histplot()
함수를 사용하여 서브플롯에 각각의 그래프를 그립니다. ax
매개변수를 사용하여 각 그래프를 해당하는 서브플롯에 배치합니다. set_title()
메서드를 사용하여 각 서브플롯에 제목을 설정합니다.
마지막으로, plt.tight_layout()
함수를 사용하여 그래프 간의 간격을 조정한 후 plt.show()
함수를 호출하여 그래프를 출력합니다.
이렇게 서브플롯을 사용하여 Seaborn 그래프를 한 번에 그리면 여러 그래프를 한 번에 비교하거나 동시에 표시할 수 있습니다.
그래프의 크기와 위치를 조정하여 원하는 형태로 시각화 결과를 표현할 수 있습니다.
Matplotlib의 서브플롯(axes) 개체를 사용하여 그래프의 세부 항목을 설정
Matplotlib의 서브플롯(axes) 개체를 사용하여 그래프의 세부 항목을 설정할 수 있습니다.
각 서브플롯에 대해 타이틀, x축 레이블, y축 레이블 등을 개별적으로 설정할 수 있습니다.
아래 예제는 Seaborn을 사용하여 그래프를 그리고 Matplotlib의 서브플롯 개체를 활용하여 각 그래프의 세부 항목을 설정하는 방법을 보여줍니다.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 샘플 데이터프레임 생성
data = {'Year': [2010, 2011, 2012, 2013, 2014],
'Sales': [500, 800, 1200, 900, 1500],
'Expenses': [300, 400, 600, 500, 800]}
df = pd.DataFrame(data)
# 서브플롯 생성
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
# 첫 번째 서브플롯: 선 그래프
sns.lineplot(data=df, x='Year', y='Sales', ax=axes[0, 0])
axes[0, 0].set_title('Sales Trend', fontsize=12)
axes[0, 0].set_xlabel('Year', fontsize=10)
axes[0, 0].set_ylabel('Sales', fontsize=10)
axes[0, 0].set_xticks(df['Year'])
axes[0, 0].tick_params(axis='both', which='major', labelsize=8)
# 두 번째 서브플롯: 막대 그래프
sns.barplot(data=df, x='Year', y='Expenses', ax=axes[0, 1])
axes[0, 1].set_title('Expenses', fontsize=12)
axes[0, 1].set_xlabel('Year', fontsize=10)
axes[0, 1].set_ylabel('Expenses', fontsize=10)
axes[0, 1].tick_params(axis='both', which='major', labelsize=8)
# 세 번째 서브플롯: 산점도
sns.scatterplot(data=df, x='Sales', y='Expenses', ax=axes[1, 0])
axes[1, 0].set_title('Sales vs. Expenses', fontsize=12)
axes[1, 0].set_xlabel('Sales', fontsize=10)
axes[1, 0].set_ylabel('Expenses', fontsize=10)
axes[1, 0].tick_params(axis='both', which='major', labelsize=8)
# 네 번째 서브플롯: 히스토그램
sns.histplot(data=df, x='Sales', ax=axes[1, 1])
axes[1, 1].set_title('Sales Distribution', fontsize=12)
axes[1, 1].set_xlabel('Sales', fontsize=10)
axes[1, 1].set_ylabel('Frequency', fontsize=10)
axes[1, 1].tick_params(axis='both', which='major', labelsize=8)
# 그래프 간 간격 조정
plt.tight_layout()
# 그래프 출력
plt.show()
위의 예제에서는 set_title()
, set_xlabel()
, set_ylabel()
, set_xticks()
, tick_params()
등의 메서드를 사용하여 각 서브플롯의 세부 항목을 설정하였습니다.
각 set_
메서드는 다음과 같은 역할을 수행합니다.
set_title()
서브플롯의 제목 설정
set_xlabel()
x축 레이블 설정
set_ylabel()
y축 레이블 설정
set_xticks()
x축의 눈금(tick) 설정
tick_params()
축의 눈금(tick) 스타일과 레이블 크기 설정
각각의 메서드에는 fontsize
나 labelsize
와 같은 매개변수를 사용하여 글꼴 크기를 조절할 수 있습니다. tick_params()
메서드를 사용하여 축의 눈금(tick) 스타일과 레이블 크기를 조정할 수도 있습니다.
위 예제에서는 tight_layout()
함수를 사용하여 그래프 간의 간격을 조정하였습니다.
이를 통해 그래프가 겹치지 않고 잘 정렬되어 출력됩니다.
각 서브플롯에 대해 필요한 세부 항목을 설정하여 그래프를 더욱 자세하게 커스터마이징할 수 있습니다.
이를 통해 그래프의 가독성과 전반적인 시각적인 효과를 향상시킬 수 있습니다.