[파이썬] ggplot `facet_wrap`과 `facet_grid` 활용

ggplot은 R에서 데이터 시각화를 위해 가장 널리 사용되는 패키지 중 하나입니다. facet_wrapfacet_grid는 ggplot의 핵심 기능 중 하나로, 여러 개의 그래프를 한 번에 생성하는 데 사용됩니다. 이를 통해 데이터의 다양한 요소를 쉽게 비교 및 시각화할 수 있습니다.

facet_wrap

먼저 facet_wrap 함수를 살펴보겠습니다. 이 함수는 데이터를 지정한 변수(예: 범주형 변수)로 쪼개어 한 번에 여러 개의 패널에 그래프를 표시합니다.

ggplot(data, aes(x = x_var, y = y_var)) +
    geom_bar() +
    facet_wrap(~ facet_var)

위의 코드에서 data는 그래프를 생성할 데이터 프레임을 나타내며, x_vary_var는 x축과 y축에 사용할 변수입니다. geom_bar()는 막대 그래프를 생성하는 함수이며, facet_wrap(~ facet_var)facet_var로 지정된 변수를 기준으로 패널을 생성합니다.

facet_grid

facet_grid 함수는 facet_wrap와 유사하지만, 그래프를 생성할 때 2개 이상의 변수를 조합하여 그리드 형태로 패널을 생성합니다.

ggplot(data, aes(x = x_var, y = y_var)) +
    geom_point() +
    facet_grid(row_var ~ column_var)

위의 코드에서 row_varcolumn_var는 그리드 형태로 패널을 생성할 변수를 나타냅니다. geom_point()는 점 그래프를 생성하는 함수입니다.

예시

이제 예시를 통해 facet_wrapfacet_grid의 활용을 살펴보겠습니다. 아래의 코드는 ‘mpg’ 데이터셋에서 자동차의 연비(mpg)를 제조 회사(manufacturer)와 자동차 유형(class)에 따라 비교하는 그래프를 그립니다.

ggplot(mpg, aes(x = manufacturer, y = hwy)) +
    geom_boxplot() +
    facet_wrap(~ class, scales = "free_y")

위의 코드에서 mpg는 ‘ggplot2’ 패키지에 기본으로 포함된 데이터셋입니다. geom_boxplot()은 상자 그림을 생성하는 함수이며, scales = "free_y"는 y축 스케일을 패널별로 자유롭게 조정하도록 지정합니다. 이를 통해 각 패널을 통해 연비의 분포를 비교할 수 있습니다.

결론

ggplot의 facet_wrapfacet_grid는 데이터의 다양한 요소를 한 번에 시각화할 수 있는 강력한 기능입니다. 이를 활용하여 여러 개의 패널에 그래프를 나눠서 표시하면, 데이터 간의 비교와 관계 파악이 더욱 용이해집니다.